be/src/exec/operator/operator.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 | | |
18 | | #pragma once |
19 | | |
20 | | #include <fmt/format.h> |
21 | | #include <glog/logging.h> |
22 | | |
23 | | #include <atomic> |
24 | | #include <cstdint> |
25 | | #include <functional> |
26 | | #include <limits> |
27 | | #include <memory> |
28 | | #include <string> |
29 | | #include <utility> |
30 | | #include <vector> |
31 | | |
32 | | #include "common/be_mock_util.h" |
33 | | #include "common/exception.h" |
34 | | #include "common/logging.h" |
35 | | #include "common/status.h" |
36 | | #include "core/block/block.h" |
37 | | #include "exec/exchange/local_exchanger.h" |
38 | | #include "exec/exchange/vdata_stream_recvr.h" |
39 | | #include "exec/operator/operator.h" |
40 | | #include "exec/operator/spill_counters.h" |
41 | | #include "exec/operator/spill_utils.h" |
42 | | #include "exec/pipeline/dependency.h" |
43 | | #include "runtime/memory/mem_tracker.h" |
44 | | #include "runtime/query_context.h" |
45 | | #include "runtime/runtime_profile.h" |
46 | | #include "runtime/runtime_profile_counter_names.h" |
47 | | #include "runtime/runtime_state.h" |
48 | | #include "runtime/thread_context.h" |
49 | | #include "util/block_budget.h" |
50 | | |
51 | | namespace doris { |
52 | | class RowDescriptor; |
53 | | class RuntimeState; |
54 | | class TDataSink; |
55 | | class AsyncResultWriter; |
56 | | class ScoreRuntime; |
57 | | class AnnTopNRuntime; |
58 | | class ParsedPartitionBoundaries; |
59 | | } // namespace doris |
60 | | |
61 | | namespace doris { |
62 | | |
63 | | class OperatorBase; |
64 | | class OperatorXBase; |
65 | | class DataSinkOperatorXBase; |
66 | | |
67 | | using OperatorPtr = std::shared_ptr<OperatorXBase>; |
68 | | using Operators = std::vector<OperatorPtr>; |
69 | | |
70 | | using DataSinkOperatorPtr = std::shared_ptr<DataSinkOperatorXBase>; |
71 | | |
72 | | // This struct is used only for initializing local state. |
73 | | struct LocalStateInfo { |
74 | | RuntimeProfile* parent_profile = nullptr; |
75 | | const std::vector<TScanRangeParams>& scan_ranges; |
76 | | BasicSharedState* shared_state; |
77 | | const std::map<int, std::pair<std::shared_ptr<BasicSharedState>, |
78 | | std::vector<std::shared_ptr<Dependency>>>>& shared_state_map; |
79 | | const int task_idx; |
80 | | }; |
81 | | |
82 | | // This struct is used only for initializing local sink state. |
83 | | struct LocalSinkStateInfo { |
84 | | const int task_idx; |
85 | | RuntimeProfile* parent_profile = nullptr; |
86 | | const int sender_id; |
87 | | BasicSharedState* shared_state; |
88 | | const std::map<int, std::pair<std::shared_ptr<BasicSharedState>, |
89 | | std::vector<std::shared_ptr<Dependency>>>>& shared_state_map; |
90 | | const TDataSink& tsink; |
91 | | }; |
92 | | |
93 | | class OperatorBase { |
94 | | public: |
95 | 688k | explicit OperatorBase() : _child(nullptr), _is_closed(false) {} |
96 | | explicit OperatorBase(bool is_serial_operator) |
97 | 1.18M | : _child(nullptr), _is_closed(false), _is_serial_operator(is_serial_operator) {} |
98 | 1.87M | virtual ~OperatorBase() = default; |
99 | | |
100 | 0 | virtual bool is_sink() const { return false; } |
101 | | |
102 | 1.07M | virtual bool is_source() const { return false; } |
103 | | |
104 | | [[nodiscard]] virtual const RowDescriptor& row_desc() const; |
105 | | |
106 | 0 | [[nodiscard]] virtual Status init(const TDataSink& tsink) { return Status::OK(); } |
107 | | |
108 | | [[nodiscard]] virtual std::string get_name() const = 0; |
109 | | [[nodiscard]] virtual Status prepare(RuntimeState* state) = 0; |
110 | | [[nodiscard]] virtual Status terminate(RuntimeState* state) = 0; |
111 | | [[nodiscard]] virtual Status close(RuntimeState* state); |
112 | | [[nodiscard]] virtual int node_id() const = 0; |
113 | 697k | [[nodiscard]] virtual int parallelism(RuntimeState* state) const { |
114 | 697k | return _is_serial_operator ? 1 : state->query_parallel_instance_num(); |
115 | 697k | } |
116 | | |
117 | 1.17M | [[nodiscard]] virtual Status set_child(OperatorPtr child) { |
118 | 1.17M | if (_child && child != nullptr) { |
119 | 0 | return Status::InternalError("Child is already set in node name={}", get_name()); |
120 | 0 | } |
121 | 1.17M | _child = child; |
122 | 1.17M | return Status::OK(); |
123 | 1.17M | } |
124 | | |
125 | | // Operators need to be executed serially. (e.g. finalized agg without key) |
126 | 3.04M | [[nodiscard]] virtual bool is_serial_operator() const { return _is_serial_operator; } |
127 | | |
128 | 0 | [[nodiscard]] bool is_closed() const { return _is_closed; } |
129 | | |
130 | 18.7k | virtual size_t revocable_mem_size(RuntimeState* state) const { return 0; } |
131 | | |
132 | 0 | virtual Status revoke_memory(RuntimeState* state) { return Status::OK(); } |
133 | | |
134 | 24 | virtual bool is_hash_join_probe() const { return false; } |
135 | | |
136 | | /** |
137 | | * Pipeline task is blockable means it will be blocked in the next run. So we should put the |
138 | | * pipeline task into the blocking task scheduler. |
139 | | */ |
140 | | virtual bool is_blockable(RuntimeState* state) const = 0; |
141 | 0 | virtual void set_low_memory_mode(RuntimeState* state) {} |
142 | | |
143 | | OperatorPtr child() { return _child; } |
144 | 0 | virtual Status reset(RuntimeState* state) { |
145 | 0 | return Status::InternalError("Reset is not implemented in operator: {}", get_name()); |
146 | 0 | } |
147 | | |
148 | | /* -------------- Interfaces to determine the input data properties -------------- */ |
149 | | /** |
150 | | * Return True if this operator relies on the bucket distribution (e.g. COLOCATE join, 1-phase AGG). |
151 | | * Data input to this kind of operators must have the same distribution with the table buckets. |
152 | | * It is also means `required_data_distribution` should be `BUCKET_HASH_SHUFFLE`. |
153 | | * @return |
154 | | */ |
155 | 3.95M | [[nodiscard]] virtual bool is_colocated_operator() const { return false; } |
156 | | /** |
157 | | * Return True if this operator relies on the bucket distribution or specific hash data distribution (e.g. SHUFFLED HASH join). |
158 | | * Data input to this kind of operators must be HASH distributed according to some rules. |
159 | | * All colocated operators are also shuffled operators. |
160 | | * It is also means `required_data_distribution` should be `BUCKET_HASH_SHUFFLE` or `HASH_SHUFFLE`. |
161 | | * @return |
162 | | */ |
163 | 3.95M | [[nodiscard]] virtual bool is_shuffled_operator() const { return false; } |
164 | | /** |
165 | | * For multiple children's operators, return true if this is a shuffled operator or this is followed by a shuffled operator (HASH JOIN and SET OPERATION). |
166 | | * |
167 | | * For single child's operators, return true if this operator is followed by a shuffled operator. |
168 | | * For example, in the plan fragment: |
169 | | * `UNION` -> `SHUFFLED HASH JOIN` |
170 | | * The `SHUFFLED HASH JOIN` is a shuffled operator so the UNION operator is followed by a shuffled operator. |
171 | | */ |
172 | 4.24M | [[nodiscard]] virtual bool followed_by_shuffled_operator() const { |
173 | 4.24M | return _followed_by_shuffled_operator; |
174 | 4.24M | } |
175 | | /** |
176 | | * Update the operator properties according to the plan node. |
177 | | * This is called before `prepare`. |
178 | | */ |
179 | | virtual void update_operator(const TPlanNode& tnode, bool followed_by_shuffled_operator, |
180 | 893k | bool require_bucket_distribution) { |
181 | 893k | _followed_by_shuffled_operator = followed_by_shuffled_operator; |
182 | 893k | _require_bucket_distribution = require_bucket_distribution; |
183 | 893k | } |
184 | | /** |
185 | | * Return the required data distribution of this operator. |
186 | | */ |
187 | | [[nodiscard]] virtual DataDistribution required_data_distribution( |
188 | | RuntimeState* /*state*/) const; |
189 | | |
190 | | protected: |
191 | | [[nodiscard]] bool child_breaks_local_key_distribution(RuntimeState* state) const; |
192 | | |
193 | | OperatorPtr _child = nullptr; |
194 | | |
195 | | bool _is_closed; |
196 | | bool _followed_by_shuffled_operator = false; |
197 | | bool _require_bucket_distribution = false; |
198 | | bool _is_serial_operator = false; |
199 | | }; |
200 | | |
201 | | class PipelineXLocalStateBase { |
202 | | public: |
203 | | PipelineXLocalStateBase(RuntimeState* state, OperatorXBase* parent); |
204 | 2.47M | virtual ~PipelineXLocalStateBase() = default; |
205 | | |
206 | | template <class TARGET> |
207 | 24.2M | TARGET& cast() { |
208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) |
209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() |
210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); |
211 | 24.2M | return reinterpret_cast<TARGET&>(*this); |
212 | 24.2M | } _ZN5doris23PipelineXLocalStateBase4castINS_22RecCTESourceLocalStateEEERT_v Line | Count | Source | 207 | 12.6k | TARGET& cast() { | 208 | 12.6k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 12.6k | return reinterpret_cast<TARGET&>(*this); | 212 | 12.6k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_21CacheSourceLocalStateEEERT_v Line | Count | Source | 207 | 79 | TARGET& cast() { | 208 | 79 | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 79 | return reinterpret_cast<TARGET&>(*this); | 212 | 79 | } |
_ZN5doris23PipelineXLocalStateBase4castINS_29LocalExchangeSourceLocalStateEEERT_v Line | Count | Source | 207 | 3.40M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 3.40M | return reinterpret_cast<TARGET&>(*this); | 212 | 3.40M | } |
_ZN5doris23PipelineXLocalStateBase4castINS_35MultiCastDataStreamSourceLocalStateEEERT_v Line | Count | Source | 207 | 92.3k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 92.3k | return reinterpret_cast<TARGET&>(*this); | 212 | 92.3k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_18OlapScanLocalStateEEERT_v Line | Count | Source | 207 | 5.22M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 5.22M | return reinterpret_cast<TARGET&>(*this); | 212 | 5.22M | } |
_ZN5doris23PipelineXLocalStateBase4castINS_21GroupCommitLocalStateEEERT_v Line | Count | Source | 207 | 4.58M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 4.58M | return reinterpret_cast<TARGET&>(*this); | 212 | 4.58M | } |
Unexecuted instantiation: _ZN5doris23PipelineXLocalStateBase4castINS_18JDBCScanLocalStateEEERT_v _ZN5doris23PipelineXLocalStateBase4castINS_18FileScanLocalStateEEERT_v Line | Count | Source | 207 | 474k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 474k | return reinterpret_cast<TARGET&>(*this); | 212 | 474k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_23HashJoinProbeLocalStateEEERT_v Line | Count | Source | 207 | 1.13M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 1.13M | return reinterpret_cast<TARGET&>(*this); | 212 | 1.13M | } |
_ZN5doris23PipelineXLocalStateBase4castINS_34PartitionedHashJoinProbeLocalStateEEERT_v Line | Count | Source | 207 | 59 | TARGET& cast() { | 208 | 59 | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 59 | return reinterpret_cast<TARGET&>(*this); | 212 | 59 | } |
_ZN5doris23PipelineXLocalStateBase4castINS_29NestedLoopJoinProbeLocalStateEEERT_v Line | Count | Source | 207 | 275k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 275k | return reinterpret_cast<TARGET&>(*this); | 212 | 275k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_21UnionSourceLocalStateEEERT_v Line | Count | Source | 207 | 380k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 380k | return reinterpret_cast<TARGET&>(*this); | 212 | 380k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_29PartitionSortSourceLocalStateEEERT_v Line | Count | Source | 207 | 3.64k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 3.64k | return reinterpret_cast<TARGET&>(*this); | 212 | 3.64k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_25MaterializationLocalStateEEERT_v Line | Count | Source | 207 | 37.8k | TARGET& cast() { | 208 | 37.8k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 37.8k | return reinterpret_cast<TARGET&>(*this); | 212 | 37.8k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_19SetSourceLocalStateILb1EEEEERT_v Line | Count | Source | 207 | 8.03k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 8.03k | return reinterpret_cast<TARGET&>(*this); | 212 | 8.03k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_19SetSourceLocalStateILb0EEEEERT_v Line | Count | Source | 207 | 8.68k | TARGET& cast() { | 208 | 8.68k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 8.68k | return reinterpret_cast<TARGET&>(*this); | 212 | 8.68k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_18EmptySetLocalStateEEERT_v Line | Count | Source | 207 | 3.41k | TARGET& cast() { | 208 | 3.41k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 3.41k | return reinterpret_cast<TARGET&>(*this); | 212 | 3.41k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_18MetaScanLocalStateEEERT_v Line | Count | Source | 207 | 20.1k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 20.1k | return reinterpret_cast<TARGET&>(*this); | 212 | 20.1k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_16SelectLocalStateEEERT_v Line | Count | Source | 207 | 29.2k | TARGET& cast() { | 208 | 29.2k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 1 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 1 | << " and expect type is" << typeid(TARGET).name(); | 211 | 29.2k | return reinterpret_cast<TARGET&>(*this); | 212 | 29.2k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_20RecCTEScanLocalStateEEERT_v Line | Count | Source | 207 | 12.7k | TARGET& cast() { | 208 | 12.7k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 12.7k | return reinterpret_cast<TARGET&>(*this); | 212 | 12.7k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_23TableFunctionLocalStateEEERT_v Line | Count | Source | 207 | 56.6k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 56.6k | return reinterpret_cast<TARGET&>(*this); | 212 | 56.6k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_18ExchangeLocalStateEEERT_v Line | Count | Source | 207 | 2.05M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 2.05M | return reinterpret_cast<TARGET&>(*this); | 212 | 2.05M | } |
_ZN5doris23PipelineXLocalStateBase4castINS_30DistinctStreamingAggLocalStateEEERT_v Line | Count | Source | 207 | 4.21M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 4.21M | return reinterpret_cast<TARGET&>(*this); | 212 | 4.21M | } |
_ZN5doris23PipelineXLocalStateBase4castINS_22StreamingAggLocalStateEEERT_v Line | Count | Source | 207 | 250k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 250k | return reinterpret_cast<TARGET&>(*this); | 212 | 250k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_13AggLocalStateEEERT_v Line | Count | Source | 207 | 450k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 450k | return reinterpret_cast<TARGET&>(*this); | 212 | 450k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_24PartitionedAggLocalStateEEERT_v Line | Count | Source | 207 | 570 | TARGET& cast() { | 208 | 570 | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 570 | return reinterpret_cast<TARGET&>(*this); | 212 | 570 | } |
_ZN5doris23PipelineXLocalStateBase4castINS_21BucketedAggLocalStateEEERT_v Line | Count | Source | 207 | 14.8k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 14.8k | return reinterpret_cast<TARGET&>(*this); | 212 | 14.8k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_14SortLocalStateEEERT_v Line | Count | Source | 207 | 40.6k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 40.6k | return reinterpret_cast<TARGET&>(*this); | 212 | 40.6k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_19SpillSortLocalStateEEERT_v Line | Count | Source | 207 | 725 | TARGET& cast() { | 208 | 725 | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 725 | return reinterpret_cast<TARGET&>(*this); | 212 | 725 | } |
_ZN5doris23PipelineXLocalStateBase4castINS_24LocalMergeSortLocalStateEEERT_v Line | Count | Source | 207 | 1.34M | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 1.34M | return reinterpret_cast<TARGET&>(*this); | 212 | 1.34M | } |
_ZN5doris23PipelineXLocalStateBase4castINS_18AnalyticLocalStateEEERT_v Line | Count | Source | 207 | 40.2k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 40.2k | return reinterpret_cast<TARGET&>(*this); | 212 | 40.2k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_16RepeatLocalStateEEERT_v Line | Count | Source | 207 | 32.2k | TARGET& cast() { | 208 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 211 | 32.2k | return reinterpret_cast<TARGET&>(*this); | 212 | 32.2k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_23AssertNumRowsLocalStateEEERT_v Line | Count | Source | 207 | 1.28k | TARGET& cast() { | 208 | 1.28k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 1.28k | return reinterpret_cast<TARGET&>(*this); | 212 | 1.28k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_17DataGenLocalStateEEERT_v Line | Count | Source | 207 | 46.2k | TARGET& cast() { | 208 | 46.2k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 1 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 1 | << " and expect type is" << typeid(TARGET).name(); | 211 | 46.2k | return reinterpret_cast<TARGET&>(*this); | 212 | 46.2k | } |
_ZN5doris23PipelineXLocalStateBase4castINS_20SchemaScanLocalStateEEERT_v Line | Count | Source | 207 | 11.2k | TARGET& cast() { | 208 | 11.2k | DCHECK(dynamic_cast<TARGET*>(this)) | 209 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 210 | 0 | << " and expect type is" << typeid(TARGET).name(); | 211 | 11.2k | return reinterpret_cast<TARGET&>(*this); | 212 | 11.2k | } |
|
213 | | template <class TARGET> |
214 | | const TARGET& cast() const { |
215 | | DCHECK(dynamic_cast<TARGET*>(this)) |
216 | | << " Mismatch type! Current type is " << typeid(*this).name() |
217 | | << " and expect type is" << typeid(TARGET).name(); |
218 | | return reinterpret_cast<const TARGET&>(*this); |
219 | | } |
220 | | |
221 | | // Do initialization. This step should be executed only once and in bthread, so we can do some |
222 | | // lightweight or non-idempotent operations (e.g. init profile, clone expr ctx from operatorX) |
223 | | virtual Status init(RuntimeState* state, LocalStateInfo& info) = 0; |
224 | | // Make sure all resources are ready before execution. For example, remote tablets should be |
225 | | // loaded to local storage. |
226 | | // This is called by execution pthread and different from `Operator::prepare` which is called |
227 | | // by bthread. |
228 | | virtual Status prepare(RuntimeState* state) = 0; |
229 | | // Do initialization. This step can be executed multiple times, so we should make sure it is |
230 | | // idempotent (e.g. wait for runtime filters). |
231 | | virtual Status open(RuntimeState* state) = 0; |
232 | | virtual Status close(RuntimeState* state) = 0; |
233 | | virtual Status terminate(RuntimeState* state) = 0; |
234 | | |
235 | | // If use projection, we should clear `_origin_block`. |
236 | | void clear_origin_block(); |
237 | | |
238 | | void reached_limit(Block* block, bool* eos); |
239 | 2.45M | RuntimeProfile* operator_profile() { return _operator_profile.get(); } |
240 | 743k | RuntimeProfile* common_profile() { return _common_profile.get(); } |
241 | 16.2M | RuntimeProfile* custom_profile() { return _custom_profile.get(); } |
242 | | |
243 | 13.6M | RuntimeProfile::Counter* exec_time_counter() { return _exec_timer; } |
244 | 0 | RuntimeProfile::Counter* memory_used_counter() { return _memory_used_counter; } |
245 | 7.30k | OperatorXBase* parent() { return _parent; } |
246 | 4.35M | RuntimeState* state() { return _state; } |
247 | 7.70k | [[nodiscard]] const BlockBudget& block_budget() const { return _budget; } |
248 | 642k | VExprContextSPtrs& conjuncts() { return _conjuncts; } |
249 | 0 | VExprContextSPtrs& projections() { return _projections; } |
250 | 23.0k | [[nodiscard]] int64_t num_rows_returned() const { return _num_rows_returned; } |
251 | 693k | void add_num_rows_returned(int64_t delta) { _num_rows_returned += delta; } |
252 | 6.85k | void set_num_rows_returned(int64_t value) { _num_rows_returned = value; } |
253 | 7.48M | void update_output_block_counters(const Block& block) { |
254 | 7.48M | if (auto rows = block.rows()) { |
255 | 1.32M | COUNTER_UPDATE(_rows_returned_counter, rows); |
256 | 1.32M | COUNTER_UPDATE(_blocks_returned_counter, 1); |
257 | 1.32M | auto block_bytes = static_cast<int64_t>(block.bytes()); |
258 | 1.32M | COUNTER_UPDATE(_output_block_bytes_counter, block_bytes); |
259 | 1.32M | if (block_bytes > _max_output_block_bytes) { |
260 | 853k | _max_output_block_bytes = block_bytes; |
261 | 853k | COUNTER_SET(_max_output_block_bytes_counter, block_bytes); |
262 | 853k | } |
263 | 1.32M | if (block_bytes < _min_output_block_bytes) { |
264 | 851k | _min_output_block_bytes = block_bytes; |
265 | 851k | COUNTER_SET(_min_output_block_bytes_counter, block_bytes); |
266 | 851k | } |
267 | 1.32M | } |
268 | 7.48M | } |
269 | | |
270 | | [[nodiscard]] virtual std::string debug_string(int indentation_level = 0) const = 0; |
271 | | [[nodiscard]] virtual bool is_blockable() const; |
272 | | |
273 | 0 | virtual std::vector<Dependency*> dependencies() const { return {nullptr}; } |
274 | | |
275 | | // override in Scan |
276 | 2.44M | virtual Dependency* finishdependency() { return nullptr; } |
277 | | // override in Scan MultiCastSink |
278 | 1.59M | virtual std::vector<Dependency*> execution_dependencies() { return {}; } |
279 | | |
280 | | Status filter_block(const VExprContextSPtrs& expr_contexts, Block* block); |
281 | | |
282 | 4.53M | int64_t& estimate_memory_usage() { return _estimate_memory_usage; } |
283 | | |
284 | 7.52M | void reset_estimate_memory_usage() { _estimate_memory_usage = 0; } |
285 | | |
286 | 8.97M | bool low_memory_mode() { |
287 | | #ifdef BE_TEST |
288 | | return false; |
289 | | #else |
290 | 8.97M | return _state->low_memory_mode(); |
291 | 8.97M | #endif |
292 | 8.97M | } |
293 | | |
294 | | protected: |
295 | | friend class OperatorXBase; |
296 | | template <typename LocalStateType> |
297 | | friend class ScanOperatorX; |
298 | | |
299 | | ObjectPool* _pool = nullptr; |
300 | | int64_t _num_rows_returned {0}; |
301 | | int64_t _estimate_memory_usage {0}; |
302 | | |
303 | | /* |
304 | | Each operator has its profile like this: |
305 | | XXXX_OPERATOR: |
306 | | CommonCounters: |
307 | | ... |
308 | | CustomCounters: |
309 | | ... |
310 | | */ |
311 | | // Profile of this operator. |
312 | | // Should not modify this profile usually. |
313 | | std::unique_ptr<RuntimeProfile> _operator_profile; |
314 | | // CommonCounters of this operator. |
315 | | // CommonCounters are counters that will be used by all operators. |
316 | | std::unique_ptr<RuntimeProfile> _common_profile; |
317 | | // CustomCounters of this operator. |
318 | | // CustomCounters are counters that will be used by this operator only. |
319 | | std::unique_ptr<RuntimeProfile> _custom_profile; |
320 | | |
321 | | RuntimeProfile::Counter* _rows_returned_counter = nullptr; |
322 | | RuntimeProfile::Counter* _blocks_returned_counter = nullptr; |
323 | | RuntimeProfile::Counter* _output_block_bytes_counter = nullptr; |
324 | | RuntimeProfile::Counter* _max_output_block_bytes_counter = nullptr; |
325 | | RuntimeProfile::Counter* _min_output_block_bytes_counter = nullptr; |
326 | | int64_t _max_output_block_bytes = 0; |
327 | | int64_t _min_output_block_bytes = std::numeric_limits<int64_t>::max(); |
328 | | RuntimeProfile::Counter* _wait_for_dependency_timer = nullptr; |
329 | | // Account for current memory and peak memory used by this node |
330 | | RuntimeProfile::HighWaterMarkCounter* _memory_used_counter = nullptr; |
331 | | RuntimeProfile::Counter* _projection_timer = nullptr; |
332 | | RuntimeProfile::Counter* _exec_timer = nullptr; |
333 | | RuntimeProfile::Counter* _init_timer = nullptr; |
334 | | RuntimeProfile::Counter* _open_timer = nullptr; |
335 | | RuntimeProfile::Counter* _close_timer = nullptr; |
336 | | |
337 | | OperatorXBase* _parent = nullptr; |
338 | | RuntimeState* _state = nullptr; |
339 | | // Execution-scoped row/byte budget derived from the session batch settings. |
340 | | const BlockBudget _budget; |
341 | | VExprContextSPtrs _conjuncts; |
342 | | VExprContextSPtrs _projections; |
343 | | std::shared_ptr<ScoreRuntime> _score_runtime; |
344 | | std::shared_ptr<segment_v2::AnnTopNRuntime> _ann_topn_runtime; |
345 | | // Used in common subexpression elimination to compute intermediate results. |
346 | | std::vector<VExprContextSPtrs> _intermediate_projections; |
347 | | |
348 | | bool _closed = false; |
349 | | std::atomic<bool> _terminated = false; |
350 | | Block _origin_block; |
351 | | }; |
352 | | |
353 | | template <typename SharedStateArg = FakeSharedState> |
354 | | class PipelineXLocalState : public PipelineXLocalStateBase { |
355 | | public: |
356 | | using SharedStateType = SharedStateArg; |
357 | | PipelineXLocalState(RuntimeState* state, OperatorXBase* parent) |
358 | 2.46M | : PipelineXLocalStateBase(state, parent) {}_ZN5doris19PipelineXLocalStateINS_19HashJoinSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 71.7k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_30PartitionedHashJoinSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 42 | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_15SortSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 252k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_20SpillSortSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 25 | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_25NestedLoopJoinSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 11.8k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_19AnalyticSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 8.67k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_14AggSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 150k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_22BucketedAggSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 482 | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_25PartitionedAggSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 136 | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_15FakeSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 1.15M | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_16UnionSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 55.7k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_20DataQueueSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 17 | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_20MultiCastSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 10.3k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_28PartitionSortNodeSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 340 | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_14SetSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 5.28k | : PipelineXLocalStateBase(state, parent) {} |
_ZN5doris19PipelineXLocalStateINS_24LocalExchangeSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 738k | : PipelineXLocalStateBase(state, parent) {} |
Unexecuted instantiation: _ZN5doris19PipelineXLocalStateINS_16BasicSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE _ZN5doris19PipelineXLocalStateINS_17RecCTESharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 358 | 163 | : PipelineXLocalStateBase(state, parent) {} |
|
359 | | ~PipelineXLocalState() override = default; |
360 | | |
361 | | Status init(RuntimeState* state, LocalStateInfo& info) override; |
362 | 11.6M | Status prepare(RuntimeState* state) override { return Status::OK(); }_ZN5doris19PipelineXLocalStateINS_15FakeSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 4.72M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_14SetSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 26.4k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_15SortSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 1.33M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_24LocalExchangeSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 4.06M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_20DataQueueSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 60 | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_28PartitionSortNodeSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 1.70k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_16UnionSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 129k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_19HashJoinSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 389k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
Unexecuted instantiation: _ZN5doris19PipelineXLocalStateINS_30PartitionedHashJoinSharedStateEE7prepareEPNS_12RuntimeStateE _ZN5doris19PipelineXLocalStateINS_20SpillSortSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 177 | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_25NestedLoopJoinSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 88.2k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_19AnalyticSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 43.7k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_14AggSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 742k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_22BucketedAggSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 6.44k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_25PartitionedAggSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 570 | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris19PipelineXLocalStateINS_20MultiCastSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 90.6k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
Unexecuted instantiation: _ZN5doris19PipelineXLocalStateINS_16BasicSharedStateEE7prepareEPNS_12RuntimeStateE _ZN5doris19PipelineXLocalStateINS_17RecCTESharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 362 | 5.23k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
|
363 | | Status open(RuntimeState* state) override; |
364 | | |
365 | | virtual std::string name_suffix() const; |
366 | | |
367 | | Status close(RuntimeState* state) override; |
368 | | Status terminate(RuntimeState* state) override; |
369 | | |
370 | | [[nodiscard]] std::string debug_string(int indentation_level = 0) const override; |
371 | | |
372 | 21.3M | std::vector<Dependency*> dependencies() const override { |
373 | 21.3M | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; |
374 | 21.3M | } _ZNK5doris19PipelineXLocalStateINS_15FakeSharedStateEE12dependenciesEv Line | Count | Source | 372 | 441k | std::vector<Dependency*> dependencies() const override { | 373 | 441k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 441k | } |
_ZNK5doris19PipelineXLocalStateINS_14SetSharedStateEE12dependenciesEv Line | Count | Source | 372 | 5.27k | std::vector<Dependency*> dependencies() const override { | 373 | 5.27k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 5.27k | } |
_ZNK5doris19PipelineXLocalStateINS_15SortSharedStateEE12dependenciesEv Line | Count | Source | 372 | 210k | std::vector<Dependency*> dependencies() const override { | 373 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 210k | } |
_ZNK5doris19PipelineXLocalStateINS_24LocalExchangeSharedStateEE12dependenciesEv Line | Count | Source | 372 | 729k | std::vector<Dependency*> dependencies() const override { | 373 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 729k | } |
_ZNK5doris19PipelineXLocalStateINS_20DataQueueSharedStateEE12dependenciesEv Line | Count | Source | 372 | 14 | std::vector<Dependency*> dependencies() const override { | 373 | 14 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 14 | } |
_ZNK5doris19PipelineXLocalStateINS_28PartitionSortNodeSharedStateEE12dependenciesEv Line | Count | Source | 372 | 19.6M | std::vector<Dependency*> dependencies() const override { | 373 | 19.6M | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 19.6M | } |
_ZNK5doris19PipelineXLocalStateINS_16UnionSharedStateEE12dependenciesEv Line | Count | Source | 372 | 55.8k | std::vector<Dependency*> dependencies() const override { | 373 | 55.8k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 55.8k | } |
_ZNK5doris19PipelineXLocalStateINS_19HashJoinSharedStateEE12dependenciesEv Line | Count | Source | 372 | 47.6k | std::vector<Dependency*> dependencies() const override { | 373 | 47.6k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 47.6k | } |
Unexecuted instantiation: _ZNK5doris19PipelineXLocalStateINS_30PartitionedHashJoinSharedStateEE12dependenciesEv _ZNK5doris19PipelineXLocalStateINS_20SpillSortSharedStateEE12dependenciesEv Line | Count | Source | 372 | 13 | std::vector<Dependency*> dependencies() const override { | 373 | 13 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 13 | } |
_ZNK5doris19PipelineXLocalStateINS_25NestedLoopJoinSharedStateEE12dependenciesEv Line | Count | Source | 372 | 11.8k | std::vector<Dependency*> dependencies() const override { | 373 | 11.8k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 11.8k | } |
_ZNK5doris19PipelineXLocalStateINS_19AnalyticSharedStateEE12dependenciesEv Line | Count | Source | 372 | 8.72k | std::vector<Dependency*> dependencies() const override { | 373 | 8.72k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 8.72k | } |
_ZNK5doris19PipelineXLocalStateINS_14AggSharedStateEE12dependenciesEv Line | Count | Source | 372 | 149k | std::vector<Dependency*> dependencies() const override { | 373 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 149k | } |
_ZNK5doris19PipelineXLocalStateINS_22BucketedAggSharedStateEE12dependenciesEv Line | Count | Source | 372 | 483 | std::vector<Dependency*> dependencies() const override { | 373 | 483 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 483 | } |
_ZNK5doris19PipelineXLocalStateINS_25PartitionedAggSharedStateEE12dependenciesEv Line | Count | Source | 372 | 114 | std::vector<Dependency*> dependencies() const override { | 373 | 114 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 114 | } |
_ZNK5doris19PipelineXLocalStateINS_20MultiCastSharedStateEE12dependenciesEv Line | Count | Source | 372 | 10.3k | std::vector<Dependency*> dependencies() const override { | 373 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 374 | 10.3k | } |
Unexecuted instantiation: _ZNK5doris19PipelineXLocalStateINS_16BasicSharedStateEE12dependenciesEv Unexecuted instantiation: _ZNK5doris19PipelineXLocalStateINS_17RecCTESharedStateEE12dependenciesEv |
375 | | |
376 | 2.39M | virtual bool must_set_shared_state() const { |
377 | 2.39M | return !std::is_same_v<SharedStateArg, FakeSharedState>; |
378 | 2.39M | } _ZNK5doris19PipelineXLocalStateINS_15FakeSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 1.15M | virtual bool must_set_shared_state() const { | 377 | 1.15M | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 1.15M | } |
_ZNK5doris19PipelineXLocalStateINS_14SetSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 5.25k | virtual bool must_set_shared_state() const { | 377 | 5.25k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 5.25k | } |
_ZNK5doris19PipelineXLocalStateINS_15SortSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 250k | virtual bool must_set_shared_state() const { | 377 | 250k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 250k | } |
_ZNK5doris19PipelineXLocalStateINS_24LocalExchangeSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 735k | virtual bool must_set_shared_state() const { | 377 | 735k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 735k | } |
_ZNK5doris19PipelineXLocalStateINS_20DataQueueSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 17 | virtual bool must_set_shared_state() const { | 377 | 17 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 17 | } |
_ZNK5doris19PipelineXLocalStateINS_28PartitionSortNodeSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 339 | virtual bool must_set_shared_state() const { | 377 | 339 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 339 | } |
Unexecuted instantiation: _ZNK5doris19PipelineXLocalStateINS_16UnionSharedStateEE21must_set_shared_stateEv _ZNK5doris19PipelineXLocalStateINS_19HashJoinSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 71.3k | virtual bool must_set_shared_state() const { | 377 | 71.3k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 71.3k | } |
_ZNK5doris19PipelineXLocalStateINS_30PartitionedHashJoinSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 1 | virtual bool must_set_shared_state() const { | 377 | 1 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 1 | } |
_ZNK5doris19PipelineXLocalStateINS_20SpillSortSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 24 | virtual bool must_set_shared_state() const { | 377 | 24 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 24 | } |
_ZNK5doris19PipelineXLocalStateINS_25NestedLoopJoinSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 11.7k | virtual bool must_set_shared_state() const { | 377 | 11.7k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 11.7k | } |
_ZNK5doris19PipelineXLocalStateINS_19AnalyticSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 8.62k | virtual bool must_set_shared_state() const { | 377 | 8.62k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 8.62k | } |
_ZNK5doris19PipelineXLocalStateINS_14AggSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 149k | virtual bool must_set_shared_state() const { | 377 | 149k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 149k | } |
_ZNK5doris19PipelineXLocalStateINS_22BucketedAggSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 482 | virtual bool must_set_shared_state() const { | 377 | 482 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 482 | } |
_ZNK5doris19PipelineXLocalStateINS_25PartitionedAggSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 124 | virtual bool must_set_shared_state() const { | 377 | 124 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 124 | } |
_ZNK5doris19PipelineXLocalStateINS_20MultiCastSharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 10.3k | virtual bool must_set_shared_state() const { | 377 | 10.3k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 10.3k | } |
Unexecuted instantiation: _ZNK5doris19PipelineXLocalStateINS_16BasicSharedStateEE21must_set_shared_stateEv _ZNK5doris19PipelineXLocalStateINS_17RecCTESharedStateEE21must_set_shared_stateEv Line | Count | Source | 376 | 163 | virtual bool must_set_shared_state() const { | 377 | 163 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 378 | 163 | } |
|
379 | | |
380 | | protected: |
381 | | Dependency* _dependency = nullptr; |
382 | | SharedStateArg* _shared_state = nullptr; |
383 | | }; |
384 | | |
385 | | template <typename SharedStateArg> |
386 | | class PipelineXSpillLocalState : public PipelineXLocalState<SharedStateArg> { |
387 | | public: |
388 | | using Base = PipelineXLocalState<SharedStateArg>; |
389 | | PipelineXSpillLocalState(RuntimeState* state, OperatorXBase* parent) |
390 | 10.5k | : PipelineXLocalState<SharedStateArg>(state, parent) {}_ZN5doris24PipelineXSpillLocalStateINS_30PartitionedHashJoinSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 390 | 42 | : PipelineXLocalState<SharedStateArg>(state, parent) {} |
_ZN5doris24PipelineXSpillLocalStateINS_20SpillSortSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 390 | 25 | : PipelineXLocalState<SharedStateArg>(state, parent) {} |
_ZN5doris24PipelineXSpillLocalStateINS_25PartitionedAggSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 390 | 136 | : PipelineXLocalState<SharedStateArg>(state, parent) {} |
_ZN5doris24PipelineXSpillLocalStateINS_20MultiCastSharedStateEEC2EPNS_12RuntimeStateEPNS_13OperatorXBaseE Line | Count | Source | 390 | 10.3k | : PipelineXLocalState<SharedStateArg>(state, parent) {} |
|
391 | | ~PipelineXSpillLocalState() override = default; |
392 | | |
393 | 10.5k | Status init(RuntimeState* state, LocalStateInfo& info) override { |
394 | 10.5k | RETURN_IF_ERROR(PipelineXLocalState<SharedStateArg>::init(state, info)); |
395 | | |
396 | 10.5k | init_spill_read_counters(); |
397 | | |
398 | 10.5k | return Status::OK(); |
399 | 10.5k | } _ZN5doris24PipelineXSpillLocalStateINS_20SpillSortSharedStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE Line | Count | Source | 393 | 24 | Status init(RuntimeState* state, LocalStateInfo& info) override { | 394 | 24 | RETURN_IF_ERROR(PipelineXLocalState<SharedStateArg>::init(state, info)); | 395 | | | 396 | 24 | init_spill_read_counters(); | 397 | | | 398 | 24 | return Status::OK(); | 399 | 24 | } |
_ZN5doris24PipelineXSpillLocalStateINS_25PartitionedAggSharedStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE Line | Count | Source | 393 | 124 | Status init(RuntimeState* state, LocalStateInfo& info) override { | 394 | 124 | RETURN_IF_ERROR(PipelineXLocalState<SharedStateArg>::init(state, info)); | 395 | | | 396 | 124 | init_spill_read_counters(); | 397 | | | 398 | 124 | return Status::OK(); | 399 | 124 | } |
_ZN5doris24PipelineXSpillLocalStateINS_20MultiCastSharedStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE Line | Count | Source | 393 | 10.3k | Status init(RuntimeState* state, LocalStateInfo& info) override { | 394 | 10.3k | RETURN_IF_ERROR(PipelineXLocalState<SharedStateArg>::init(state, info)); | 395 | | | 396 | 10.3k | init_spill_read_counters(); | 397 | | | 398 | 10.3k | return Status::OK(); | 399 | 10.3k | } |
_ZN5doris24PipelineXSpillLocalStateINS_30PartitionedHashJoinSharedStateEE4initEPNS_12RuntimeStateERNS_14LocalStateInfoE Line | Count | Source | 393 | 1 | Status init(RuntimeState* state, LocalStateInfo& info) override { | 394 | 1 | RETURN_IF_ERROR(PipelineXLocalState<SharedStateArg>::init(state, info)); | 395 | | | 396 | 1 | init_spill_read_counters(); | 397 | | | 398 | 1 | return Status::OK(); | 399 | 1 | } |
|
400 | | |
401 | 202 | void init_spill_write_counters() { |
402 | 202 | _write_counters.init(Base::custom_profile()); |
403 | | |
404 | | // Source-only extra write counters |
405 | 202 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( |
406 | 202 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); |
407 | 202 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( |
408 | 202 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); |
409 | 202 | } _ZN5doris24PipelineXSpillLocalStateINS_30PartitionedHashJoinSharedStateEE25init_spill_write_countersEv Line | Count | Source | 401 | 42 | void init_spill_write_counters() { | 402 | 42 | _write_counters.init(Base::custom_profile()); | 403 | | | 404 | | // Source-only extra write counters | 405 | 42 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 406 | 42 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 407 | 42 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 408 | 42 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 409 | 42 | } |
_ZN5doris24PipelineXSpillLocalStateINS_20SpillSortSharedStateEE25init_spill_write_countersEv Line | Count | Source | 401 | 24 | void init_spill_write_counters() { | 402 | 24 | _write_counters.init(Base::custom_profile()); | 403 | | | 404 | | // Source-only extra write counters | 405 | 24 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 406 | 24 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 407 | 24 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 408 | 24 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 409 | 24 | } |
_ZN5doris24PipelineXSpillLocalStateINS_25PartitionedAggSharedStateEE25init_spill_write_countersEv Line | Count | Source | 401 | 136 | void init_spill_write_counters() { | 402 | 136 | _write_counters.init(Base::custom_profile()); | 403 | | | 404 | | // Source-only extra write counters | 405 | 136 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 406 | 136 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 407 | 136 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 408 | 136 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 409 | 136 | } |
|
410 | | |
411 | 10.5k | void init_spill_read_counters() { |
412 | 10.5k | _spill_total_timer = |
413 | 10.5k | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); |
414 | | |
415 | 10.5k | _read_counters.init(Base::custom_profile()); |
416 | | |
417 | 10.5k | _spill_file_current_size = ADD_COUNTER_WITH_LEVEL( |
418 | 10.5k | Base::custom_profile(), profile::SPILL_WRITE_FILE_CURRENT_BYTES, TUnit::BYTES, 1); |
419 | 10.5k | } _ZN5doris24PipelineXSpillLocalStateINS_20SpillSortSharedStateEE24init_spill_read_countersEv Line | Count | Source | 411 | 24 | void init_spill_read_counters() { | 412 | 24 | _spill_total_timer = | 413 | 24 | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 414 | | | 415 | 24 | _read_counters.init(Base::custom_profile()); | 416 | | | 417 | 24 | _spill_file_current_size = ADD_COUNTER_WITH_LEVEL( | 418 | 24 | Base::custom_profile(), profile::SPILL_WRITE_FILE_CURRENT_BYTES, TUnit::BYTES, 1); | 419 | 24 | } |
_ZN5doris24PipelineXSpillLocalStateINS_25PartitionedAggSharedStateEE24init_spill_read_countersEv Line | Count | Source | 411 | 136 | void init_spill_read_counters() { | 412 | 136 | _spill_total_timer = | 413 | 136 | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 414 | | | 415 | 136 | _read_counters.init(Base::custom_profile()); | 416 | | | 417 | 136 | _spill_file_current_size = ADD_COUNTER_WITH_LEVEL( | 418 | 136 | Base::custom_profile(), profile::SPILL_WRITE_FILE_CURRENT_BYTES, TUnit::BYTES, 1); | 419 | 136 | } |
_ZN5doris24PipelineXSpillLocalStateINS_20MultiCastSharedStateEE24init_spill_read_countersEv Line | Count | Source | 411 | 10.3k | void init_spill_read_counters() { | 412 | 10.3k | _spill_total_timer = | 413 | 10.3k | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 414 | | | 415 | 10.3k | _read_counters.init(Base::custom_profile()); | 416 | | | 417 | 10.3k | _spill_file_current_size = ADD_COUNTER_WITH_LEVEL( | 418 | 10.3k | Base::custom_profile(), profile::SPILL_WRITE_FILE_CURRENT_BYTES, TUnit::BYTES, 1); | 419 | 10.3k | } |
_ZN5doris24PipelineXSpillLocalStateINS_30PartitionedHashJoinSharedStateEE24init_spill_read_countersEv Line | Count | Source | 411 | 42 | void init_spill_read_counters() { | 412 | 42 | _spill_total_timer = | 413 | 42 | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 414 | | | 415 | 42 | _read_counters.init(Base::custom_profile()); | 416 | | | 417 | 42 | _spill_file_current_size = ADD_COUNTER_WITH_LEVEL( | 418 | 42 | Base::custom_profile(), profile::SPILL_WRITE_FILE_CURRENT_BYTES, TUnit::BYTES, 1); | 419 | 42 | } |
|
420 | | |
421 | | // Total time of spill, including spill task scheduling time, |
422 | | // serialize block time, write disk file time, |
423 | | // and read disk file time, deserialize block time etc. |
424 | | RuntimeProfile::Counter* _spill_total_timer = nullptr; |
425 | | |
426 | | // Shared spill write counters |
427 | | SpillWriteCounters _write_counters; |
428 | | // Backward-compatible aliases for commonly accessed write counters |
429 | | RuntimeProfile::Counter*& _spill_write_file_timer = _write_counters.spill_write_file_timer; |
430 | | RuntimeProfile::Counter*& _spill_write_serialize_block_timer = |
431 | | _write_counters.spill_write_serialize_block_timer; |
432 | | RuntimeProfile::Counter*& _spill_write_block_count = _write_counters.spill_write_block_count; |
433 | | RuntimeProfile::Counter*& _spill_write_block_data_size = |
434 | | _write_counters.spill_write_block_data_size; |
435 | | RuntimeProfile::Counter*& _spill_write_rows_count = _write_counters.spill_write_rows_count; |
436 | | |
437 | | // Source-only write counters (not in SpillWriteCounters) |
438 | | // Total bytes of spill data written to disk file(after serialized) |
439 | | RuntimeProfile::Counter* _spill_write_file_total_size = nullptr; |
440 | | RuntimeProfile::Counter* _spill_file_total_count = nullptr; |
441 | | // Current spilled file size |
442 | | RuntimeProfile::Counter* _spill_file_current_size = nullptr; |
443 | | |
444 | | // Shared spill read counters |
445 | | SpillReadCounters _read_counters; |
446 | | // Backward-compatible aliases for commonly accessed read counters |
447 | | RuntimeProfile::Counter*& _spill_read_file_time = _read_counters.spill_read_file_time; |
448 | | RuntimeProfile::Counter*& _spill_read_deserialize_block_timer = |
449 | | _read_counters.spill_read_deserialize_block_timer; |
450 | | RuntimeProfile::Counter*& _spill_read_block_count = _read_counters.spill_read_block_count; |
451 | | RuntimeProfile::Counter*& _spill_read_block_data_size = |
452 | | _read_counters.spill_read_block_data_size; |
453 | | RuntimeProfile::Counter*& _spill_read_file_size = _read_counters.spill_read_file_size; |
454 | | RuntimeProfile::Counter*& _spill_read_rows_count = _read_counters.spill_read_rows_count; |
455 | | RuntimeProfile::Counter*& _spill_read_file_count = _read_counters.spill_read_file_count; |
456 | | }; |
457 | | |
458 | | class DataSinkOperatorXBase; |
459 | | |
460 | | class PipelineXSinkLocalStateBase { |
461 | | public: |
462 | | PipelineXSinkLocalStateBase(DataSinkOperatorXBase* parent_, RuntimeState* state_); |
463 | 2.02M | virtual ~PipelineXSinkLocalStateBase() = default; |
464 | | |
465 | | // Do initialization. This step should be executed only once and in bthread, so we can do some |
466 | | // lightweight or non-idempotent operations (e.g. init profile, clone expr ctx from operatorX) |
467 | | virtual Status init(RuntimeState* state, LocalSinkStateInfo& info) = 0; |
468 | | |
469 | | virtual Status prepare(RuntimeState* state) = 0; |
470 | | // Do initialization. This step can be executed multiple times, so we should make sure it is |
471 | | // idempotent (e.g. wait for runtime filters). |
472 | | virtual Status open(RuntimeState* state) = 0; |
473 | | virtual Status terminate(RuntimeState* state) = 0; |
474 | | virtual Status close(RuntimeState* state, Status exec_status) = 0; |
475 | 4.89M | [[nodiscard]] virtual bool is_finished() const { return false; } |
476 | 14.9M | [[nodiscard]] virtual bool is_blockable() const { return false; } |
477 | | |
478 | | [[nodiscard]] virtual std::string debug_string(int indentation_level) const = 0; |
479 | | |
480 | | template <class TARGET> |
481 | 3.61M | TARGET& cast() { |
482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) |
483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() |
484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); |
485 | 3.61M | return reinterpret_cast<TARGET&>(*this); |
486 | 3.61M | } _ZN5doris27PipelineXSinkLocalStateBase4castINS_22ExchangeSinkLocalStateEEERT_v Line | Count | Source | 481 | 876k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 876k | return reinterpret_cast<TARGET&>(*this); | 486 | 876k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_19UnionSinkLocalStateEEERT_v Line | Count | Source | 481 | 11.6k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 11.6k | return reinterpret_cast<TARGET&>(*this); | 486 | 11.6k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_25OlapTableSinkV2LocalStateEEERT_v Line | Count | Source | 481 | 10.7k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 10.7k | return reinterpret_cast<TARGET&>(*this); | 486 | 10.7k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_23OlapTableSinkLocalStateEEERT_v Line | Count | Source | 481 | 62.0k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 62.0k | return reinterpret_cast<TARGET&>(*this); | 486 | 62.0k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_23HiveTableSinkLocalStateEEERT_v Line | Count | Source | 481 | 7.51k | TARGET& cast() { | 482 | 7.51k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 7.51k | return reinterpret_cast<TARGET&>(*this); | 486 | 7.51k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_26IcebergTableSinkLocalStateEEERT_v Line | Count | Source | 481 | 5.33k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 5.33k | return reinterpret_cast<TARGET&>(*this); | 486 | 5.33k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_27IcebergDeleteSinkLocalStateEEERT_v Line | Count | Source | 481 | 180 | TARGET& cast() { | 482 | 180 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 180 | return reinterpret_cast<TARGET&>(*this); | 486 | 180 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_26IcebergMergeSinkLocalStateEEERT_v Line | Count | Source | 481 | 792 | TARGET& cast() { | 482 | 792 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 792 | return reinterpret_cast<TARGET&>(*this); | 486 | 792 | } |
Unexecuted instantiation: _ZN5doris27PipelineXSinkLocalStateBase4castINS_21MCTableSinkLocalStateEEERT_v _ZN5doris27PipelineXSinkLocalStateBase4castINS_22TVFTableSinkLocalStateEEERT_v Line | Count | Source | 481 | 310 | TARGET& cast() { | 482 | 310 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 310 | return reinterpret_cast<TARGET&>(*this); | 486 | 310 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_27LocalExchangeSinkLocalStateEEERT_v Line | Count | Source | 481 | 445k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 445k | return reinterpret_cast<TARGET&>(*this); | 486 | 445k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_17AggSinkLocalStateEEERT_v Line | Count | Source | 481 | 605k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 605k | return reinterpret_cast<TARGET&>(*this); | 486 | 605k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_27HashJoinBuildSinkLocalStateEEERT_v Line | Count | Source | 481 | 558k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 558k | return reinterpret_cast<TARGET&>(*this); | 486 | 558k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_26RecCTEAnchorSinkLocalStateEEERT_v Line | Count | Source | 481 | 503 | TARGET& cast() { | 482 | 503 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 503 | return reinterpret_cast<TARGET&>(*this); | 486 | 503 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_20RecCTESinkLocalStateEEERT_v Line | Count | Source | 481 | 6.39k | TARGET& cast() { | 482 | 6.39k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 6.39k | return reinterpret_cast<TARGET&>(*this); | 486 | 6.39k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_20ResultSinkLocalStateEEERT_v Line | Count | Source | 481 | 508k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 508k | return reinterpret_cast<TARGET&>(*this); | 486 | 508k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_23JdbcTableSinkLocalStateEEERT_v Line | Count | Source | 481 | 112 | TARGET& cast() { | 482 | 112 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 112 | return reinterpret_cast<TARGET&>(*this); | 486 | 112 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_27MemoryScratchSinkLocalStateEEERT_v Line | Count | Source | 481 | 6 | TARGET& cast() { | 482 | 6 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 6 | return reinterpret_cast<TARGET&>(*this); | 486 | 6 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_24ResultFileSinkLocalStateEEERT_v Line | Count | Source | 481 | 2.36k | TARGET& cast() { | 482 | 2.36k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 2.36k | return reinterpret_cast<TARGET&>(*this); | 486 | 2.36k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_31SpillIcebergTableSinkLocalStateEEERT_v Line | Count | Source | 481 | 80 | TARGET& cast() { | 482 | 80 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 80 | return reinterpret_cast<TARGET&>(*this); | 486 | 80 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_22AnalyticSinkLocalStateEEERT_v Line | Count | Source | 481 | 31.2k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 31.2k | return reinterpret_cast<TARGET&>(*this); | 486 | 31.2k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_23BlackholeSinkLocalStateEEERT_v Line | Count | Source | 481 | 521 | TARGET& cast() { | 482 | 521 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 521 | return reinterpret_cast<TARGET&>(*this); | 486 | 521 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_18SortSinkLocalStateEEERT_v Line | Count | Source | 481 | 394k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 394k | return reinterpret_cast<TARGET&>(*this); | 486 | 394k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_23SpillSortSinkLocalStateEEERT_v Line | Count | Source | 481 | 1.54k | TARGET& cast() { | 482 | 1.54k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 1.54k | return reinterpret_cast<TARGET&>(*this); | 486 | 1.54k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_25BucketedAggSinkLocalStateEEERT_v Line | Count | Source | 481 | 2.68k | TARGET& cast() { | 482 | 2.68k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 2.68k | return reinterpret_cast<TARGET&>(*this); | 486 | 2.68k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_28PartitionedAggSinkLocalStateEEERT_v Line | Count | Source | 481 | 1.15k | TARGET& cast() { | 482 | 1.15k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 1.15k | return reinterpret_cast<TARGET&>(*this); | 486 | 1.15k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_33NestedLoopJoinBuildSinkLocalStateEEERT_v Line | Count | Source | 481 | 32.1k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 32.1k | return reinterpret_cast<TARGET&>(*this); | 486 | 32.1k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_33MultiCastDataStreamSinkLocalStateEEERT_v Line | Count | Source | 481 | 10.8k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 10.8k | return reinterpret_cast<TARGET&>(*this); | 486 | 10.8k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_27PartitionSortSinkLocalStateEEERT_v Line | Count | Source | 481 | 1.18k | TARGET& cast() { | 482 | 1.18k | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 1.18k | return reinterpret_cast<TARGET&>(*this); | 486 | 1.18k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_22SetProbeSinkLocalStateILb1EEEEERT_v Line | Count | Source | 481 | 12.1k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 12.1k | return reinterpret_cast<TARGET&>(*this); | 486 | 12.1k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_22SetProbeSinkLocalStateILb0EEEEERT_v Line | Count | Source | 481 | 6.35k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 6.35k | return reinterpret_cast<TARGET&>(*this); | 486 | 6.35k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_17SetSinkLocalStateILb1EEEEERT_v Line | Count | Source | 481 | 6.71k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 6.71k | return reinterpret_cast<TARGET&>(*this); | 486 | 6.71k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_17SetSinkLocalStateILb0EEEEERT_v Line | Count | Source | 481 | 6.27k | TARGET& cast() { | 482 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 485 | 6.27k | return reinterpret_cast<TARGET&>(*this); | 486 | 6.27k | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_33PartitionedHashJoinSinkLocalStateEEERT_v Line | Count | Source | 481 | 9 | TARGET& cast() { | 482 | 9 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 9 | return reinterpret_cast<TARGET&>(*this); | 486 | 9 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_30GroupCommitBlockSinkLocalStateEEERT_v Line | Count | Source | 481 | 670 | TARGET& cast() { | 482 | 670 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 670 | return reinterpret_cast<TARGET&>(*this); | 486 | 670 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_19CacheSinkLocalStateEEERT_v Line | Count | Source | 481 | 17 | TARGET& cast() { | 482 | 17 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 17 | return reinterpret_cast<TARGET&>(*this); | 486 | 17 | } |
_ZN5doris27PipelineXSinkLocalStateBase4castINS_18DictSinkLocalStateEEERT_v Line | Count | Source | 481 | 263 | TARGET& cast() { | 482 | 263 | DCHECK(dynamic_cast<TARGET*>(this)) | 483 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 484 | 0 | << " and expect type is" << typeid(TARGET).name(); | 485 | 263 | return reinterpret_cast<TARGET&>(*this); | 486 | 263 | } |
|
487 | | template <class TARGET> |
488 | | const TARGET& cast() const { |
489 | | DCHECK(dynamic_cast<const TARGET*>(this)) |
490 | | << " Mismatch type! Current type is " << typeid(*this).name() |
491 | | << " and expect type is" << typeid(TARGET).name(); |
492 | | return reinterpret_cast<const TARGET&>(*this); |
493 | | } |
494 | | |
495 | 115k | DataSinkOperatorXBase* parent() { return _parent; } |
496 | 5.21M | RuntimeState* state() { return _state; } |
497 | 2.01M | RuntimeProfile* operator_profile() { return _operator_profile; } |
498 | 3.50M | RuntimeProfile* common_profile() { return _common_profile; } |
499 | 17.5M | RuntimeProfile* custom_profile() { return _custom_profile; } |
500 | | |
501 | 11.8k | [[nodiscard]] RuntimeProfile* faker_runtime_profile() const { |
502 | 11.8k | return _faker_runtime_profile.get(); |
503 | 11.8k | } |
504 | | |
505 | 2.92M | RuntimeProfile::Counter* rows_input_counter() { return _rows_input_counter; } |
506 | 8.37M | RuntimeProfile::Counter* exec_time_counter() { return _exec_timer; } |
507 | 3.10M | RuntimeProfile::Counter* memory_used_counter() { return _memory_used_counter; } |
508 | | |
509 | 0 | virtual std::vector<Dependency*> dependencies() const { return {nullptr}; } |
510 | | |
511 | | // override in exchange sink , AsyncWriterSink |
512 | 1.14M | virtual Dependency* finishdependency() { return nullptr; } |
513 | | |
514 | 887k | bool low_memory_mode() { return _state->low_memory_mode(); } |
515 | | |
516 | | protected: |
517 | | DataSinkOperatorXBase* _parent = nullptr; |
518 | | RuntimeState* _state = nullptr; |
519 | | RuntimeProfile* _operator_profile = nullptr; |
520 | | RuntimeProfile* _common_profile = nullptr; |
521 | | RuntimeProfile* _custom_profile = nullptr; |
522 | | // Set to true after close() has been called. subclasses should check and set this in |
523 | | // close(). |
524 | | bool _closed = false; |
525 | | bool _terminated = false; |
526 | | //NOTICE: now add a faker profile, because sometimes the profile record is useless |
527 | | //so we want remove some counters and timers, eg: in join node, if it's broadcast_join |
528 | | //and shared hash table, some counter/timer about build hash table is useless, |
529 | | //so we could add those counter/timer in faker profile, and those will not display in web profile. |
530 | | std::unique_ptr<RuntimeProfile> _faker_runtime_profile = |
531 | | std::make_unique<RuntimeProfile>(profile::FAKER_PROFILE); |
532 | | |
533 | | RuntimeProfile::Counter* _rows_input_counter = nullptr; |
534 | | RuntimeProfile::Counter* _init_timer = nullptr; |
535 | | RuntimeProfile::Counter* _open_timer = nullptr; |
536 | | RuntimeProfile::Counter* _close_timer = nullptr; |
537 | | RuntimeProfile::Counter* _wait_for_dependency_timer = nullptr; |
538 | | RuntimeProfile::Counter* _wait_for_finish_dependency_timer = nullptr; |
539 | | RuntimeProfile::Counter* _exec_timer = nullptr; |
540 | | RuntimeProfile::HighWaterMarkCounter* _memory_used_counter = nullptr; |
541 | | }; |
542 | | |
543 | | template <typename SharedStateArg = FakeSharedState> |
544 | | class PipelineXSinkLocalState : public PipelineXSinkLocalStateBase { |
545 | | public: |
546 | | using SharedStateType = SharedStateArg; |
547 | | PipelineXSinkLocalState(DataSinkOperatorXBase* parent, RuntimeState* state) |
548 | 2.01M | : PipelineXSinkLocalStateBase(parent, state) {}_ZN5doris23PipelineXSinkLocalStateINS_19HashJoinSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 119k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_30PartitionedHashJoinSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 8 | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_15SortSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 253k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_20SpillSortSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 32 | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_25NestedLoopJoinSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 11.8k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_19AnalyticSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 8.75k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_14AggSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 150k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_22BucketedAggSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 479 | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_25PartitionedAggSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 135 | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_15FakeSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 675k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_16UnionSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 6.15k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_28PartitionSortNodeSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 340 | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_20MultiCastSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 3.80k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_14SetSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 12.9k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_24LocalExchangeSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 284k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_16BasicSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 486k | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_20DataQueueSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 17 | : PipelineXSinkLocalStateBase(parent, state) {} |
_ZN5doris23PipelineXSinkLocalStateINS_17RecCTESharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 548 | 326 | : PipelineXSinkLocalStateBase(parent, state) {} |
|
549 | | ~PipelineXSinkLocalState() override = default; |
550 | | |
551 | | Status init(RuntimeState* state, LocalSinkStateInfo& info) override; |
552 | | |
553 | 12.0M | Status prepare(RuntimeState* state) override { return Status::OK(); }_ZN5doris23PipelineXSinkLocalStateINS_15FakeSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 3.90M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_16UnionSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 34.0k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_16BasicSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 3.52M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_24LocalExchangeSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 1.67M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_19AnalyticSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 43.1k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_20DataQueueSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 50 | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_20MultiCastSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 33.4k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_28PartitionSortNodeSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 1.69k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
Unexecuted instantiation: _ZN5doris23PipelineXSinkLocalStateINS_30PartitionedHashJoinSharedStateEE7prepareEPNS_12RuntimeStateE _ZN5doris23PipelineXSinkLocalStateINS_17RecCTESharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 5.64k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_15SortSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 1.48M | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_19HashJoinSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 283k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_20SpillSortSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 477 | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_25NestedLoopJoinSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 72.4k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_14AggSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 951k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_22BucketedAggSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 4.22k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_25PartitionedAggSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 962 | Status prepare(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_14SetSharedStateEE7prepareEPNS_12RuntimeStateE Line | Count | Source | 553 | 71.9k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
|
554 | 2.02M | Status open(RuntimeState* state) override { return Status::OK(); }_ZN5doris23PipelineXSinkLocalStateINS_15FakeSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 677k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_16UnionSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 6.15k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_24LocalExchangeSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 285k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_19AnalyticSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 8.75k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_20DataQueueSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 17 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_16BasicSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 488k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_20MultiCastSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 3.81k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_28PartitionSortNodeSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 340 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_30PartitionedHashJoinSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 2 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_17RecCTESharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 326 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_15SortSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 254k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_19HashJoinSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 119k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_20SpillSortSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 30 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_25NestedLoopJoinSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 11.8k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_14AggSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 150k | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_22BucketedAggSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 480 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_25PartitionedAggSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 134 | Status open(RuntimeState* state) override { return Status::OK(); } |
_ZN5doris23PipelineXSinkLocalStateINS_14SetSharedStateEE4openEPNS_12RuntimeStateE Line | Count | Source | 554 | 13.0k | Status open(RuntimeState* state) override { return Status::OK(); } |
|
555 | | |
556 | | Status terminate(RuntimeState* state) override; |
557 | | Status close(RuntimeState* state, Status exec_status) override; |
558 | | |
559 | | [[nodiscard]] std::string debug_string(int indentation_level) const override; |
560 | | |
561 | | virtual std::string name_suffix(); |
562 | | |
563 | 1.20M | std::vector<Dependency*> dependencies() const override { |
564 | 1.20M | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; |
565 | 1.20M | } _ZNK5doris23PipelineXSinkLocalStateINS_15FakeSharedStateEE12dependenciesEv Line | Count | Source | 563 | 86 | std::vector<Dependency*> dependencies() const override { | 564 | 86 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 86 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_16UnionSharedStateEE12dependenciesEv Line | Count | Source | 563 | 6.15k | std::vector<Dependency*> dependencies() const override { | 564 | 6.15k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 6.15k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_24LocalExchangeSharedStateEE12dependenciesEv Line | Count | Source | 563 | 284k | std::vector<Dependency*> dependencies() const override { | 564 | 284k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 284k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_19AnalyticSharedStateEE12dependenciesEv Line | Count | Source | 563 | 8.74k | std::vector<Dependency*> dependencies() const override { | 564 | 8.74k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 8.74k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_20DataQueueSharedStateEE12dependenciesEv Line | Count | Source | 563 | 14 | std::vector<Dependency*> dependencies() const override { | 564 | 14 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 14 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_16BasicSharedStateEE12dependenciesEv Line | Count | Source | 563 | 421k | std::vector<Dependency*> dependencies() const override { | 564 | 421k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 421k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_20MultiCastSharedStateEE12dependenciesEv Line | Count | Source | 563 | 3.81k | std::vector<Dependency*> dependencies() const override { | 564 | 3.81k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 3.81k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_28PartitionSortNodeSharedStateEE12dependenciesEv Line | Count | Source | 563 | 238 | std::vector<Dependency*> dependencies() const override { | 564 | 238 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 238 | } |
Unexecuted instantiation: _ZNK5doris23PipelineXSinkLocalStateINS_30PartitionedHashJoinSharedStateEE12dependenciesEv _ZNK5doris23PipelineXSinkLocalStateINS_17RecCTESharedStateEE12dependenciesEv Line | Count | Source | 563 | 323 | std::vector<Dependency*> dependencies() const override { | 564 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 323 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_15SortSharedStateEE12dependenciesEv Line | Count | Source | 563 | 252k | std::vector<Dependency*> dependencies() const override { | 564 | 252k | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 252k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_19HashJoinSharedStateEE12dependenciesEv Line | Count | Source | 563 | 47.7k | std::vector<Dependency*> dependencies() const override { | 564 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 47.7k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_20SpillSortSharedStateEE12dependenciesEv Line | Count | Source | 563 | 13 | std::vector<Dependency*> dependencies() const override { | 564 | 13 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 13 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_25NestedLoopJoinSharedStateEE12dependenciesEv Line | Count | Source | 563 | 11.8k | std::vector<Dependency*> dependencies() const override { | 564 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 11.8k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_14AggSharedStateEE12dependenciesEv Line | Count | Source | 563 | 150k | std::vector<Dependency*> dependencies() const override { | 564 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 150k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_22BucketedAggSharedStateEE12dependenciesEv Line | Count | Source | 563 | 476 | std::vector<Dependency*> dependencies() const override { | 564 | 476 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 476 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_25PartitionedAggSharedStateEE12dependenciesEv Line | Count | Source | 563 | 114 | std::vector<Dependency*> dependencies() const override { | 564 | 114 | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 114 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_14SetSharedStateEE12dependenciesEv Line | Count | Source | 563 | 13.0k | std::vector<Dependency*> dependencies() const override { | 564 | 18.4E | return _dependency ? std::vector<Dependency*> {_dependency} : std::vector<Dependency*> {}; | 565 | 13.0k | } |
|
566 | | |
567 | 2.00M | virtual bool must_set_shared_state() const { |
568 | 2.00M | return !std::is_same_v<SharedStateArg, FakeSharedState>; |
569 | 2.00M | } _ZNK5doris23PipelineXSinkLocalStateINS_15FakeSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 668k | virtual bool must_set_shared_state() const { | 568 | 668k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 668k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_16UnionSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 6.14k | virtual bool must_set_shared_state() const { | 568 | 6.14k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 6.14k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_16BasicSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 483k | virtual bool must_set_shared_state() const { | 568 | 483k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 483k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_24LocalExchangeSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 283k | virtual bool must_set_shared_state() const { | 568 | 283k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 283k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_19AnalyticSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 8.66k | virtual bool must_set_shared_state() const { | 568 | 8.66k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 8.66k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_20DataQueueSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 17 | virtual bool must_set_shared_state() const { | 568 | 17 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 17 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_20MultiCastSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 3.79k | virtual bool must_set_shared_state() const { | 568 | 3.79k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 3.79k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_28PartitionSortNodeSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 338 | virtual bool must_set_shared_state() const { | 568 | 338 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 338 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_30PartitionedHashJoinSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 2 | virtual bool must_set_shared_state() const { | 568 | 2 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 2 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_17RecCTESharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 326 | virtual bool must_set_shared_state() const { | 568 | 326 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 326 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_15SortSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 251k | virtual bool must_set_shared_state() const { | 568 | 251k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 251k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_19HashJoinSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 119k | virtual bool must_set_shared_state() const { | 568 | 119k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 119k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_20SpillSortSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 31 | virtual bool must_set_shared_state() const { | 568 | 31 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 31 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_25NestedLoopJoinSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 11.8k | virtual bool must_set_shared_state() const { | 568 | 11.8k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 11.8k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_14AggSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 149k | virtual bool must_set_shared_state() const { | 568 | 149k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 149k | } |
_ZNK5doris23PipelineXSinkLocalStateINS_22BucketedAggSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 479 | virtual bool must_set_shared_state() const { | 568 | 479 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 479 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_25PartitionedAggSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 134 | virtual bool must_set_shared_state() const { | 568 | 134 | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 134 | } |
_ZNK5doris23PipelineXSinkLocalStateINS_14SetSharedStateEE21must_set_shared_stateEv Line | Count | Source | 567 | 12.9k | virtual bool must_set_shared_state() const { | 568 | 12.9k | return !std::is_same_v<SharedStateArg, FakeSharedState>; | 569 | 12.9k | } |
|
570 | | |
571 | | protected: |
572 | | Dependency* _dependency = nullptr; |
573 | | SharedStateType* _shared_state = nullptr; |
574 | | }; |
575 | | |
576 | | class DataSinkOperatorXBase : public OperatorBase { |
577 | | public: |
578 | | DataSinkOperatorXBase(const int operator_id, const int node_id, const int dest_id) |
579 | 459k | : _operator_id(operator_id), _node_id(node_id), _dests_id({dest_id}) {} |
580 | | DataSinkOperatorXBase(const int operator_id, const TPlanNode& tnode, const int dest_id) |
581 | 308k | : OperatorBase(tnode.__isset.is_serial_operator && tnode.is_serial_operator), |
582 | 308k | _operator_id(operator_id), |
583 | 308k | _node_id(tnode.node_id), |
584 | 308k | _dests_id({dest_id}) {} |
585 | | |
586 | | DataSinkOperatorXBase(const int operator_id, const int node_id, std::vector<int>& dests) |
587 | 2.57k | : _operator_id(operator_id), _node_id(node_id), _dests_id(dests) {} |
588 | | |
589 | | #ifdef BE_TEST |
590 | | DataSinkOperatorXBase() : _operator_id(-1), _node_id(0), _dests_id({-1}) {}; |
591 | | #endif |
592 | | |
593 | 844k | ~DataSinkOperatorXBase() override = default; |
594 | | |
595 | | // For agg/sort/join sink. |
596 | | virtual Status init(const TPlanNode& tnode, RuntimeState* state); |
597 | | |
598 | 1.94M | virtual bool reset_to_rerun(RuntimeState* state, OperatorXBase* root) const { return false; } |
599 | | |
600 | | Status init(const TDataSink& tsink) override; |
601 | | [[nodiscard]] virtual Status init(RuntimeState* state, TLocalPartitionType::type type, |
602 | | const int num_buckets, |
603 | 0 | const std::map<int, int>& shuffle_idx_to_instance_idx) { |
604 | 0 | return Status::InternalError("init() is only implemented in local exchange!"); |
605 | 0 | } |
606 | | |
607 | 769k | Status prepare(RuntimeState* state) override { return Status::OK(); } |
608 | | Status terminate(RuntimeState* state) override; |
609 | 7.67M | [[nodiscard]] bool is_finished(RuntimeState* state) const { |
610 | 7.67M | auto result = state->get_sink_local_state_result(); |
611 | 7.67M | if (!result) { |
612 | 0 | return result.error(); |
613 | 0 | } |
614 | 7.67M | return result.value()->is_finished(); |
615 | 7.67M | } |
616 | | |
617 | 2.91M | [[nodiscard]] Status sink(RuntimeState* state, Block* block, bool eos) { |
618 | 2.91M | RETURN_IF_ERROR(block->check_column_and_type_not_null()); |
619 | 2.91M | RETURN_IF_ERROR(block->check_type_and_column()); |
620 | 2.91M | return sink_impl(state, block, eos); |
621 | 2.91M | } |
622 | | |
623 | | [[nodiscard]] virtual Status sink_impl(RuntimeState* state, Block* block, bool eos) = 0; |
624 | | |
625 | | [[nodiscard]] virtual Status setup_local_state(RuntimeState* state, |
626 | | LocalSinkStateInfo& info) = 0; |
627 | | |
628 | | // Returns the memory this sink operator expects to allocate in the next |
629 | | // execution round (sink only — pipeline task sums all operators + sink). |
630 | 2.37M | [[nodiscard]] virtual size_t get_reserve_mem_size(RuntimeState* state, bool eos) { |
631 | 2.37M | return state->minimum_operator_memory_required_bytes(); |
632 | 2.37M | } |
633 | 7.17M | bool is_blockable(RuntimeState* state) const override { |
634 | 7.17M | return state->get_sink_local_state()->is_blockable(); |
635 | 7.17M | } |
636 | | |
637 | 0 | [[nodiscard]] bool is_spillable() const { return _spillable; } |
638 | | |
639 | | template <class TARGET> |
640 | 6.51M | TARGET& cast() { |
641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) |
642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() |
643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); |
644 | 6.51M | return reinterpret_cast<TARGET&>(*this); |
645 | 6.51M | } _ZN5doris21DataSinkOperatorXBase4castINS_23ResultFileSinkOperatorXEEERT_v Line | Count | Source | 640 | 3.31k | TARGET& cast() { | 641 | 3.31k | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 3.31k | return reinterpret_cast<TARGET&>(*this); | 645 | 3.31k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_22JdbcTableSinkOperatorXEEERT_v Line | Count | Source | 640 | 412 | TARGET& cast() { | 641 | 412 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 412 | return reinterpret_cast<TARGET&>(*this); | 645 | 412 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_22OlapTableSinkOperatorXEEERT_v Line | Count | Source | 640 | 338k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 338k | return reinterpret_cast<TARGET&>(*this); | 645 | 338k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_24OlapTableSinkV2OperatorXEEERT_v Line | Count | Source | 640 | 57.3k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 57.3k | return reinterpret_cast<TARGET&>(*this); | 645 | 57.3k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_22HiveTableSinkOperatorXEEERT_v Line | Count | Source | 640 | 143k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 143k | return reinterpret_cast<TARGET&>(*this); | 645 | 143k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_25IcebergTableSinkOperatorXEEERT_v Line | Count | Source | 640 | 45.8k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 45.8k | return reinterpret_cast<TARGET&>(*this); | 645 | 45.8k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_30SpillIcebergTableSinkOperatorXEEERT_v Line | Count | Source | 640 | 160 | TARGET& cast() { | 641 | 160 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 160 | return reinterpret_cast<TARGET&>(*this); | 645 | 160 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_26IcebergDeleteSinkOperatorXEEERT_v Line | Count | Source | 640 | 640 | TARGET& cast() { | 641 | 640 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 640 | return reinterpret_cast<TARGET&>(*this); | 645 | 640 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_25IcebergMergeSinkOperatorXEEERT_v Line | Count | Source | 640 | 5.03k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 5.03k | return reinterpret_cast<TARGET&>(*this); | 645 | 5.03k | } |
Unexecuted instantiation: _ZN5doris21DataSinkOperatorXBase4castINS_20MCTableSinkOperatorXEEERT_v _ZN5doris21DataSinkOperatorXBase4castINS_21TVFTableSinkOperatorXEEERT_v Line | Count | Source | 640 | 786 | TARGET& cast() { | 641 | 786 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 786 | return reinterpret_cast<TARGET&>(*this); | 645 | 786 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_26HashJoinBuildSinkOperatorXEEERT_v Line | Count | Source | 640 | 1.23M | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 1.23M | return reinterpret_cast<TARGET&>(*this); | 645 | 1.23M | } |
_ZN5doris21DataSinkOperatorXBase4castINS_32NestedLoopJoinBuildSinkOperatorXEEERT_v Line | Count | Source | 640 | 23.6k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 23.6k | return reinterpret_cast<TARGET&>(*this); | 645 | 23.6k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_32PartitionedHashJoinSinkOperatorXEEERT_v Line | Count | Source | 640 | 17 | TARGET& cast() { | 641 | 17 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 17 | return reinterpret_cast<TARGET&>(*this); | 645 | 17 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_19ResultSinkOperatorXEEERT_v Line | Count | Source | 640 | 1.25M | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 1.25M | return reinterpret_cast<TARGET&>(*this); | 645 | 1.25M | } |
_ZN5doris21DataSinkOperatorXBase4castINS_26MemoryScratchSinkOperatorXEEERT_v Line | Count | Source | 640 | 3 | TARGET& cast() { | 641 | 3 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 3 | return reinterpret_cast<TARGET&>(*this); | 645 | 3 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_21AnalyticSinkOperatorXEEERT_v Line | Count | Source | 640 | 26.9k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 26.9k | return reinterpret_cast<TARGET&>(*this); | 645 | 26.9k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_17SortSinkOperatorXEEERT_v Line | Count | Source | 640 | 253k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 253k | return reinterpret_cast<TARGET&>(*this); | 645 | 253k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_22SpillSortSinkOperatorXEEERT_v Line | Count | Source | 640 | 506 | TARGET& cast() { | 641 | 506 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 506 | return reinterpret_cast<TARGET&>(*this); | 645 | 506 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_26LocalExchangeSinkOperatorXEEERT_v Line | Count | Source | 640 | 392k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 392k | return reinterpret_cast<TARGET&>(*this); | 645 | 392k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_16AggSinkOperatorXEEERT_v Line | Count | Source | 640 | 544k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 544k | return reinterpret_cast<TARGET&>(*this); | 645 | 544k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_24BucketedAggSinkOperatorXEEERT_v Line | Count | Source | 640 | 2.38k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 2.38k | return reinterpret_cast<TARGET&>(*this); | 645 | 2.38k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_27PartitionedAggSinkOperatorXEEERT_v Line | Count | Source | 640 | 401 | TARGET& cast() { | 641 | 401 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 401 | return reinterpret_cast<TARGET&>(*this); | 645 | 401 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_21ExchangeSinkOperatorXEEERT_v Line | Count | Source | 640 | 2.14M | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 2.14M | return reinterpret_cast<TARGET&>(*this); | 645 | 2.14M | } |
_ZN5doris21DataSinkOperatorXBase4castINS_18UnionSinkOperatorXEEERT_v Line | Count | Source | 640 | 12.2k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 12.2k | return reinterpret_cast<TARGET&>(*this); | 645 | 12.2k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_26PartitionSortSinkOperatorXEEERT_v Line | Count | Source | 640 | 338 | TARGET& cast() { | 641 | 338 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 338 | return reinterpret_cast<TARGET&>(*this); | 645 | 338 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_21SetProbeSinkOperatorXILb1EEEEERT_v Line | Count | Source | 640 | 4.91k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 4.91k | return reinterpret_cast<TARGET&>(*this); | 645 | 4.91k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_21SetProbeSinkOperatorXILb0EEEEERT_v Line | Count | Source | 640 | 2.73k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 2.73k | return reinterpret_cast<TARGET&>(*this); | 645 | 2.73k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_16SetSinkOperatorXILb1EEEEERT_v Line | Count | Source | 640 | 5.30k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 5.30k | return reinterpret_cast<TARGET&>(*this); | 645 | 5.30k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_16SetSinkOperatorXILb0EEEEERT_v Line | Count | Source | 640 | 5.19k | TARGET& cast() { | 641 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 644 | 5.19k | return reinterpret_cast<TARGET&>(*this); | 645 | 5.19k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_29GroupCommitBlockSinkOperatorXEEERT_v Line | Count | Source | 640 | 1.18k | TARGET& cast() { | 641 | 1.18k | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 1.18k | return reinterpret_cast<TARGET&>(*this); | 645 | 1.18k | } |
_ZN5doris21DataSinkOperatorXBase4castINS_17DictSinkOperatorXEEERT_v Line | Count | Source | 640 | 210 | TARGET& cast() { | 641 | 210 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 210 | return reinterpret_cast<TARGET&>(*this); | 645 | 210 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_19RecCTESinkOperatorXEEERT_v Line | Count | Source | 640 | 163 | TARGET& cast() { | 641 | 163 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 163 | return reinterpret_cast<TARGET&>(*this); | 645 | 163 | } |
_ZN5doris21DataSinkOperatorXBase4castINS_25RecCTEAnchorSinkOperatorXEEERT_v Line | Count | Source | 640 | 163 | TARGET& cast() { | 641 | 163 | DCHECK(dynamic_cast<TARGET*>(this)) | 642 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 643 | 0 | << " and expect type is" << typeid(TARGET).name(); | 644 | 163 | return reinterpret_cast<TARGET&>(*this); | 645 | 163 | } |
|
646 | | template <class TARGET> |
647 | | const TARGET& cast() const { |
648 | | DCHECK(dynamic_cast<const TARGET*>(this)) |
649 | | << " Mismatch type! Current type is " << typeid(*this).name() |
650 | | << " and expect type is" << typeid(TARGET).name(); |
651 | | return reinterpret_cast<const TARGET&>(*this); |
652 | | } |
653 | | |
654 | | [[nodiscard]] virtual std::shared_ptr<BasicSharedState> create_shared_state() const = 0; |
655 | | |
656 | 0 | Status close(RuntimeState* state) override { |
657 | 0 | return Status::InternalError("Should not reach here!"); |
658 | 0 | } |
659 | | |
660 | | [[nodiscard]] virtual std::string debug_string(int indentation_level) const; |
661 | | |
662 | | [[nodiscard]] virtual std::string debug_string(RuntimeState* state, |
663 | | int indentation_level) const; |
664 | | |
665 | 842k | [[nodiscard]] bool is_sink() const override { return true; } |
666 | | |
667 | 2.01M | static Status close(RuntimeState* state, Status exec_status) { |
668 | 2.01M | auto result = state->get_sink_local_state_result(); |
669 | 2.01M | if (!result) { |
670 | 0 | return result.error(); |
671 | 0 | } |
672 | 2.01M | return result.value()->close(state, exec_status); |
673 | 2.01M | } |
674 | | |
675 | 4.94M | [[nodiscard]] int operator_id() const { return _operator_id; } |
676 | | |
677 | 8.62M | [[nodiscard]] const std::vector<int>& dests_id() const { return _dests_id; } |
678 | | |
679 | 2.56M | [[nodiscard]] int nereids_id() const { return _nereids_id; } |
680 | | |
681 | 6.98M | [[nodiscard]] int node_id() const override { return _node_id; } |
682 | | |
683 | 4.61M | [[nodiscard]] std::string get_name() const override { return _name; } |
684 | | |
685 | 1.89M | virtual bool should_dry_run(RuntimeState* state) { return false; } |
686 | | |
687 | 241k | [[nodiscard]] virtual bool count_down_destination() { return true; } |
688 | | |
689 | | protected: |
690 | | template <typename Writer, typename Parent> |
691 | | requires(std::is_base_of_v<AsyncResultWriter, Writer>) |
692 | | friend class AsyncWriterSink; |
693 | | // _operator_id : the current Operator's ID, which is not visible to the user. |
694 | | // _node_id : the plan node ID corresponding to the Operator, which is visible on the profile. |
695 | | // _dests_id : the target _operator_id of the sink, for example, in the case of a multi-sink, there are multiple targets. |
696 | | const int _operator_id; |
697 | | const int _node_id; |
698 | | int _nereids_id = -1; |
699 | | bool _spillable = false; |
700 | | std::vector<int> _dests_id; |
701 | | std::string _name; |
702 | | }; |
703 | | |
704 | | template <typename LocalStateType> |
705 | | class DataSinkOperatorX : public DataSinkOperatorXBase { |
706 | | public: |
707 | | DataSinkOperatorX(const int id, const int node_id, const int dest_id) |
708 | 460k | : DataSinkOperatorXBase(id, node_id, dest_id) {}_ZN5doris17DataSinkOperatorXINS_27LocalExchangeSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 1.18k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_25OlapTableSinkV2LocalStateEEC2Eiii Line | Count | Source | 708 | 2.90k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_23OlapTableSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 31.7k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_30GroupCommitBlockSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 168 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_23HiveTableSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 1.48k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_26IcebergTableSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 1.73k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_27IcebergDeleteSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 20 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_26IcebergMergeSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 80 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_21MCTableSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_22TVFTableSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 156 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb1EEEEC2Eiii Line | Count | Source | 708 | 168 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb1EEEEC2Eiii Line | Count | Source | 708 | 249 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb0EEEEC2Eiii Line | Count | Source | 708 | 159 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb0EEEEC2Eiii Line | Count | Source | 708 | 174 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_26RecCTEAnchorSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 163 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_20RecCTESinkLocalStateEEC2Eiii Line | Count | Source | 708 | 163 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27HashJoinBuildSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_20ResultSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 259k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_23JdbcTableSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 88 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_27MemoryScratchSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 3 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_24ResultFileSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 503 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_31SpillIcebergTableSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 4 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22AnalyticSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_23BlackholeSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 13 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_18SortSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_23SpillSortSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 29 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_17AggSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 31 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_25BucketedAggSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_28PartitionedAggSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 140 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_22ExchangeSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 157k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_33NestedLoopJoinBuildSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_19UnionSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 1.50k | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_33MultiCastDataStreamSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_27PartitionSortSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 68 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_33PartitionedHashJoinSinkLocalStateEEC2Eiii _ZN5doris17DataSinkOperatorXINS_19CacheSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 10 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_18DictSinkLocalStateEEC2Eiii Line | Count | Source | 708 | 105 | : DataSinkOperatorXBase(id, node_id, dest_id) {} |
|
709 | | DataSinkOperatorX(const int id, const TPlanNode& tnode, const int dest_id) |
710 | 308k | : DataSinkOperatorXBase(id, tnode, dest_id) {}_ZN5doris17DataSinkOperatorXINS_27LocalExchangeSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 117k | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_27HashJoinBuildSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 82.4k | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_20ResultSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23JdbcTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27MemoryScratchSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_24ResultFileSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23OlapTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_25OlapTableSinkV2LocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23HiveTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22TVFTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_26IcebergTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_31SpillIcebergTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27IcebergDeleteSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_26IcebergMergeSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_21MCTableSinkLocalStateEEC2EiRKNS_9TPlanNodeEi _ZN5doris17DataSinkOperatorXINS_22AnalyticSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 1.82k | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23BlackholeSinkLocalStateEEC2EiRKNS_9TPlanNodeEi _ZN5doris17DataSinkOperatorXINS_18SortSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 45.3k | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23SpillSortSinkLocalStateEEC2EiRKNS_9TPlanNodeEi _ZN5doris17DataSinkOperatorXINS_17AggSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 55.2k | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
_ZN5doris17DataSinkOperatorXINS_25BucketedAggSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 94 | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_28PartitionedAggSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22ExchangeSinkLocalStateEEC2EiRKNS_9TPlanNodeEi _ZN5doris17DataSinkOperatorXINS_33NestedLoopJoinBuildSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 6.17k | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_19UnionSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_33MultiCastDataStreamSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27PartitionSortSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb1EEEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb0EEEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb1EEEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb0EEEEC2EiRKNS_9TPlanNodeEi _ZN5doris17DataSinkOperatorXINS_33PartitionedHashJoinSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Line | Count | Source | 710 | 54 | : DataSinkOperatorXBase(id, tnode, dest_id) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_30GroupCommitBlockSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_19CacheSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_18DictSinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_20RecCTESinkLocalStateEEC2EiRKNS_9TPlanNodeEi Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_26RecCTEAnchorSinkLocalStateEEC2EiRKNS_9TPlanNodeEi |
711 | | |
712 | | DataSinkOperatorX(const int id, const int node_id, std::vector<int> dest_ids) |
713 | 2.57k | : DataSinkOperatorXBase(id, node_id, dest_ids) {}_ZN5doris17DataSinkOperatorXINS_33MultiCastDataStreamSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Line | Count | Source | 713 | 2.57k | : DataSinkOperatorXBase(id, node_id, dest_ids) {} |
Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27HashJoinBuildSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_20ResultSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23JdbcTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27MemoryScratchSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_24ResultFileSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23OlapTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_25OlapTableSinkV2LocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23HiveTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22TVFTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_26IcebergTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_31SpillIcebergTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27IcebergDeleteSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_26IcebergMergeSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_21MCTableSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22AnalyticSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23BlackholeSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_18SortSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_23SpillSortSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27LocalExchangeSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_17AggSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_25BucketedAggSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_28PartitionedAggSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22ExchangeSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_33NestedLoopJoinBuildSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_19UnionSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_27PartitionSortSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb1EEEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb0EEEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb1EEEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb0EEEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_33PartitionedHashJoinSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_30GroupCommitBlockSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_19CacheSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_18DictSinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_20RecCTESinkLocalStateEEC2EiiSt6vectorIiSaIiEE Unexecuted instantiation: _ZN5doris17DataSinkOperatorXINS_26RecCTEAnchorSinkLocalStateEEC2EiiSt6vectorIiSaIiEE |
714 | | #ifdef BE_TEST |
715 | | DataSinkOperatorX() = default; |
716 | | #endif |
717 | | ~DataSinkOperatorX() override = default; |
718 | | |
719 | | Status setup_local_state(RuntimeState* state, LocalSinkStateInfo& info) override; |
720 | | std::shared_ptr<BasicSharedState> create_shared_state() const override; |
721 | | |
722 | | using LocalState = LocalStateType; |
723 | 3.58M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { |
724 | 3.58M | return state->get_sink_local_state()->template cast<LocalState>(); |
725 | 3.58M | } _ZNK5doris17DataSinkOperatorXINS_22ExchangeSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 877k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 877k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 877k | } |
_ZNK5doris17DataSinkOperatorXINS_19UnionSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 11.6k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 11.6k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 11.6k | } |
_ZNK5doris17DataSinkOperatorXINS_25OlapTableSinkV2LocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 10.7k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 10.7k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 10.7k | } |
_ZNK5doris17DataSinkOperatorXINS_23OlapTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 62.0k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 62.0k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 62.0k | } |
_ZNK5doris17DataSinkOperatorXINS_23HiveTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 7.51k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 7.51k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 7.51k | } |
_ZNK5doris17DataSinkOperatorXINS_26IcebergTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 5.33k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 5.33k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 5.33k | } |
_ZNK5doris17DataSinkOperatorXINS_27IcebergDeleteSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 180 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 180 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 180 | } |
_ZNK5doris17DataSinkOperatorXINS_26IcebergMergeSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 792 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 792 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 792 | } |
Unexecuted instantiation: _ZNK5doris17DataSinkOperatorXINS_21MCTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE _ZNK5doris17DataSinkOperatorXINS_22TVFTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 310 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 310 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 310 | } |
_ZNK5doris17DataSinkOperatorXINS_27LocalExchangeSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 446k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 446k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 446k | } |
_ZNK5doris17DataSinkOperatorXINS_17AggSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 605k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 605k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 605k | } |
_ZNK5doris17DataSinkOperatorXINS_26RecCTEAnchorSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 503 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 503 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 503 | } |
_ZNK5doris17DataSinkOperatorXINS_20RecCTESinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 6.39k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 6.39k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 6.39k | } |
_ZNK5doris17DataSinkOperatorXINS_27HashJoinBuildSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 526k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 526k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 526k | } |
_ZNK5doris17DataSinkOperatorXINS_20ResultSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 508k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 508k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 508k | } |
_ZNK5doris17DataSinkOperatorXINS_23JdbcTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 112 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 112 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 112 | } |
_ZNK5doris17DataSinkOperatorXINS_27MemoryScratchSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 6 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 6 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 6 | } |
_ZNK5doris17DataSinkOperatorXINS_24ResultFileSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 2.36k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 2.36k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 2.36k | } |
_ZNK5doris17DataSinkOperatorXINS_31SpillIcebergTableSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 80 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 80 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 80 | } |
_ZNK5doris17DataSinkOperatorXINS_22AnalyticSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 31.2k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 31.2k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 31.2k | } |
_ZNK5doris17DataSinkOperatorXINS_23BlackholeSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 521 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 521 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 521 | } |
_ZNK5doris17DataSinkOperatorXINS_18SortSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 394k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 394k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 394k | } |
_ZNK5doris17DataSinkOperatorXINS_23SpillSortSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 1.54k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 1.54k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 1.54k | } |
_ZNK5doris17DataSinkOperatorXINS_25BucketedAggSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 2.68k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 2.68k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 2.68k | } |
_ZNK5doris17DataSinkOperatorXINS_28PartitionedAggSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 1.15k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 1.15k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 1.15k | } |
_ZNK5doris17DataSinkOperatorXINS_33NestedLoopJoinBuildSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 32.1k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 32.1k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 32.1k | } |
_ZNK5doris17DataSinkOperatorXINS_33MultiCastDataStreamSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 10.8k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 10.8k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 10.8k | } |
_ZNK5doris17DataSinkOperatorXINS_27PartitionSortSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 1.18k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 1.18k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 1.18k | } |
_ZNK5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb1EEEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 12.1k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 12.1k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 12.1k | } |
_ZNK5doris17DataSinkOperatorXINS_22SetProbeSinkLocalStateILb0EEEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 6.36k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 6.36k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 6.36k | } |
_ZNK5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb1EEEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 6.72k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 6.72k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 6.72k | } |
_ZNK5doris17DataSinkOperatorXINS_17SetSinkLocalStateILb0EEEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 6.27k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 6.27k | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 6.27k | } |
_ZNK5doris17DataSinkOperatorXINS_33PartitionedHashJoinSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 9 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 9 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 9 | } |
_ZNK5doris17DataSinkOperatorXINS_30GroupCommitBlockSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 670 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 670 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 670 | } |
_ZNK5doris17DataSinkOperatorXINS_19CacheSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 17 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 17 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 17 | } |
_ZNK5doris17DataSinkOperatorXINS_18DictSinkLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 723 | 263 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 724 | 263 | return state->get_sink_local_state()->template cast<LocalState>(); | 725 | 263 | } |
|
726 | | }; |
727 | | |
728 | | template <typename SharedStateArg> |
729 | | class PipelineXSpillSinkLocalState : public PipelineXSinkLocalState<SharedStateArg> { |
730 | | public: |
731 | | using Base = PipelineXSinkLocalState<SharedStateArg>; |
732 | | PipelineXSpillSinkLocalState(DataSinkOperatorXBase* parent, RuntimeState* state) |
733 | 3.98k | : Base(parent, state) {}_ZN5doris28PipelineXSpillSinkLocalStateINS_20MultiCastSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 733 | 3.81k | : Base(parent, state) {} |
_ZN5doris28PipelineXSpillSinkLocalStateINS_30PartitionedHashJoinSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 733 | 8 | : Base(parent, state) {} |
_ZN5doris28PipelineXSpillSinkLocalStateINS_20SpillSortSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 733 | 32 | : Base(parent, state) {} |
_ZN5doris28PipelineXSpillSinkLocalStateINS_25PartitionedAggSharedStateEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 733 | 135 | : Base(parent, state) {} |
|
734 | 3.98k | ~PipelineXSpillSinkLocalState() override = default; _ZN5doris28PipelineXSpillSinkLocalStateINS_20MultiCastSharedStateEED2Ev Line | Count | Source | 734 | 3.81k | ~PipelineXSpillSinkLocalState() override = default; |
_ZN5doris28PipelineXSpillSinkLocalStateINS_30PartitionedHashJoinSharedStateEED2Ev Line | Count | Source | 734 | 8 | ~PipelineXSpillSinkLocalState() override = default; |
_ZN5doris28PipelineXSpillSinkLocalStateINS_20SpillSortSharedStateEED2Ev Line | Count | Source | 734 | 32 | ~PipelineXSpillSinkLocalState() override = default; |
_ZN5doris28PipelineXSpillSinkLocalStateINS_25PartitionedAggSharedStateEED2Ev Line | Count | Source | 734 | 135 | ~PipelineXSpillSinkLocalState() override = default; |
|
735 | | |
736 | 3.97k | Status init(RuntimeState* state, LocalSinkStateInfo& info) override { |
737 | 3.97k | RETURN_IF_ERROR(Base::init(state, info)); |
738 | 3.97k | init_spill_counters(); |
739 | 3.97k | return Status::OK(); |
740 | 3.97k | } _ZN5doris28PipelineXSpillSinkLocalStateINS_20MultiCastSharedStateEE4initEPNS_12RuntimeStateERNS_18LocalSinkStateInfoE Line | Count | Source | 736 | 3.80k | Status init(RuntimeState* state, LocalSinkStateInfo& info) override { | 737 | 3.80k | RETURN_IF_ERROR(Base::init(state, info)); | 738 | 3.80k | init_spill_counters(); | 739 | 3.80k | return Status::OK(); | 740 | 3.80k | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_30PartitionedHashJoinSharedStateEE4initEPNS_12RuntimeStateERNS_18LocalSinkStateInfoE Line | Count | Source | 736 | 2 | Status init(RuntimeState* state, LocalSinkStateInfo& info) override { | 737 | 2 | RETURN_IF_ERROR(Base::init(state, info)); | 738 | 2 | init_spill_counters(); | 739 | 2 | return Status::OK(); | 740 | 2 | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_20SpillSortSharedStateEE4initEPNS_12RuntimeStateERNS_18LocalSinkStateInfoE Line | Count | Source | 736 | 31 | Status init(RuntimeState* state, LocalSinkStateInfo& info) override { | 737 | 31 | RETURN_IF_ERROR(Base::init(state, info)); | 738 | 31 | init_spill_counters(); | 739 | 31 | return Status::OK(); | 740 | 31 | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_25PartitionedAggSharedStateEE4initEPNS_12RuntimeStateERNS_18LocalSinkStateInfoE Line | Count | Source | 736 | 134 | Status init(RuntimeState* state, LocalSinkStateInfo& info) override { | 737 | 134 | RETURN_IF_ERROR(Base::init(state, info)); | 738 | 134 | init_spill_counters(); | 739 | 134 | return Status::OK(); | 740 | 134 | } |
|
741 | | |
742 | 3.97k | void init_spill_counters() { |
743 | 3.97k | _spill_total_timer = |
744 | 3.97k | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); |
745 | | |
746 | 3.97k | _write_counters.init(Base::custom_profile()); |
747 | | |
748 | | // SpillFileWriter looks up these counters via get_counter() in its |
749 | | // constructor. They must be registered on the CustomCounters profile |
750 | | // before any SpillFileWriter is created, otherwise the lookups return |
751 | | // nullptr and COUNTER_UPDATE will SEGV. |
752 | 3.97k | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( |
753 | 3.97k | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); |
754 | 3.97k | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( |
755 | 3.97k | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); |
756 | | |
757 | 3.97k | _spill_max_rows_of_partition = ADD_COUNTER_WITH_LEVEL( |
758 | 3.97k | Base::custom_profile(), profile::SPILL_MAX_ROWS_OF_PARTITION, TUnit::UNIT, 1); |
759 | 3.97k | _spill_min_rows_of_partition = ADD_COUNTER_WITH_LEVEL( |
760 | 3.97k | Base::custom_profile(), profile::SPILL_MIN_ROWS_OF_PARTITION, TUnit::UNIT, 1); |
761 | 3.97k | } _ZN5doris28PipelineXSpillSinkLocalStateINS_20MultiCastSharedStateEE19init_spill_countersEv Line | Count | Source | 742 | 3.79k | void init_spill_counters() { | 743 | 3.79k | _spill_total_timer = | 744 | 3.79k | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 745 | | | 746 | 3.79k | _write_counters.init(Base::custom_profile()); | 747 | | | 748 | | // SpillFileWriter looks up these counters via get_counter() in its | 749 | | // constructor. They must be registered on the CustomCounters profile | 750 | | // before any SpillFileWriter is created, otherwise the lookups return | 751 | | // nullptr and COUNTER_UPDATE will SEGV. | 752 | 3.79k | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 753 | 3.79k | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 754 | 3.79k | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 755 | 3.79k | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 756 | | | 757 | 3.79k | _spill_max_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 758 | 3.79k | Base::custom_profile(), profile::SPILL_MAX_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 759 | 3.79k | _spill_min_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 760 | 3.79k | Base::custom_profile(), profile::SPILL_MIN_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 761 | 3.79k | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_30PartitionedHashJoinSharedStateEE19init_spill_countersEv Line | Count | Source | 742 | 8 | void init_spill_counters() { | 743 | 8 | _spill_total_timer = | 744 | 8 | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 745 | | | 746 | 8 | _write_counters.init(Base::custom_profile()); | 747 | | | 748 | | // SpillFileWriter looks up these counters via get_counter() in its | 749 | | // constructor. They must be registered on the CustomCounters profile | 750 | | // before any SpillFileWriter is created, otherwise the lookups return | 751 | | // nullptr and COUNTER_UPDATE will SEGV. | 752 | 8 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 753 | 8 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 754 | 8 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 755 | 8 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 756 | | | 757 | 8 | _spill_max_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 758 | 8 | Base::custom_profile(), profile::SPILL_MAX_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 759 | 8 | _spill_min_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 760 | 8 | Base::custom_profile(), profile::SPILL_MIN_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 761 | 8 | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_20SpillSortSharedStateEE19init_spill_countersEv Line | Count | Source | 742 | 31 | void init_spill_counters() { | 743 | 31 | _spill_total_timer = | 744 | 31 | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 745 | | | 746 | 31 | _write_counters.init(Base::custom_profile()); | 747 | | | 748 | | // SpillFileWriter looks up these counters via get_counter() in its | 749 | | // constructor. They must be registered on the CustomCounters profile | 750 | | // before any SpillFileWriter is created, otherwise the lookups return | 751 | | // nullptr and COUNTER_UPDATE will SEGV. | 752 | 31 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 753 | 31 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 754 | 31 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 755 | 31 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 756 | | | 757 | 31 | _spill_max_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 758 | 31 | Base::custom_profile(), profile::SPILL_MAX_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 759 | 31 | _spill_min_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 760 | 31 | Base::custom_profile(), profile::SPILL_MIN_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 761 | 31 | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_25PartitionedAggSharedStateEE19init_spill_countersEv Line | Count | Source | 742 | 135 | void init_spill_counters() { | 743 | 135 | _spill_total_timer = | 744 | 135 | ADD_TIMER_WITH_LEVEL(Base::custom_profile(), profile::SPILL_TOTAL_TIME, 1); | 745 | | | 746 | 135 | _write_counters.init(Base::custom_profile()); | 747 | | | 748 | | // SpillFileWriter looks up these counters via get_counter() in its | 749 | | // constructor. They must be registered on the CustomCounters profile | 750 | | // before any SpillFileWriter is created, otherwise the lookups return | 751 | | // nullptr and COUNTER_UPDATE will SEGV. | 752 | 135 | _spill_write_file_total_size = ADD_COUNTER_WITH_LEVEL( | 753 | 135 | Base::custom_profile(), profile::SPILL_WRITE_FILE_BYTES, TUnit::BYTES, 1); | 754 | 135 | _spill_file_total_count = ADD_COUNTER_WITH_LEVEL( | 755 | 135 | Base::custom_profile(), profile::SPILL_WRITE_FILE_TOTAL_COUNT, TUnit::UNIT, 1); | 756 | | | 757 | 135 | _spill_max_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 758 | 135 | Base::custom_profile(), profile::SPILL_MAX_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 759 | 135 | _spill_min_rows_of_partition = ADD_COUNTER_WITH_LEVEL( | 760 | 135 | Base::custom_profile(), profile::SPILL_MIN_ROWS_OF_PARTITION, TUnit::UNIT, 1); | 761 | 135 | } |
|
762 | | |
763 | 3.93k | std::vector<Dependency*> dependencies() const override { |
764 | 3.93k | auto dependencies = Base::dependencies(); |
765 | 3.93k | return dependencies; |
766 | 3.93k | } _ZNK5doris28PipelineXSpillSinkLocalStateINS_20MultiCastSharedStateEE12dependenciesEv Line | Count | Source | 763 | 3.81k | std::vector<Dependency*> dependencies() const override { | 764 | 3.81k | auto dependencies = Base::dependencies(); | 765 | 3.81k | return dependencies; | 766 | 3.81k | } |
Unexecuted instantiation: _ZNK5doris28PipelineXSpillSinkLocalStateINS_30PartitionedHashJoinSharedStateEE12dependenciesEv _ZNK5doris28PipelineXSpillSinkLocalStateINS_20SpillSortSharedStateEE12dependenciesEv Line | Count | Source | 763 | 13 | std::vector<Dependency*> dependencies() const override { | 764 | 13 | auto dependencies = Base::dependencies(); | 765 | 13 | return dependencies; | 766 | 13 | } |
_ZNK5doris28PipelineXSpillSinkLocalStateINS_25PartitionedAggSharedStateEE12dependenciesEv Line | Count | Source | 763 | 114 | std::vector<Dependency*> dependencies() const override { | 764 | 114 | auto dependencies = Base::dependencies(); | 765 | 114 | return dependencies; | 766 | 114 | } |
|
767 | | |
768 | 467 | void update_max_min_rows_counter() { |
769 | 467 | int64_t max_rows = 0; |
770 | 467 | int64_t min_rows = std::numeric_limits<int64_t>::max(); |
771 | | |
772 | 2.05k | for (auto rows : _rows_in_partitions) { |
773 | 2.05k | if (rows > max_rows) { |
774 | 11 | max_rows = rows; |
775 | 11 | } |
776 | 2.05k | if (rows < min_rows) { |
777 | 469 | min_rows = rows; |
778 | 469 | } |
779 | 2.05k | } |
780 | | |
781 | 467 | COUNTER_SET(_spill_max_rows_of_partition, max_rows); |
782 | 467 | COUNTER_SET(_spill_min_rows_of_partition, min_rows); |
783 | 467 | } _ZN5doris28PipelineXSpillSinkLocalStateINS_30PartitionedHashJoinSharedStateEE27update_max_min_rows_counterEv Line | Count | Source | 768 | 4 | void update_max_min_rows_counter() { | 769 | 4 | int64_t max_rows = 0; | 770 | 4 | int64_t min_rows = std::numeric_limits<int64_t>::max(); | 771 | | | 772 | 32 | for (auto rows : _rows_in_partitions) { | 773 | 32 | if (rows > max_rows) { | 774 | 4 | max_rows = rows; | 775 | 4 | } | 776 | 32 | if (rows < min_rows) { | 777 | 6 | min_rows = rows; | 778 | 6 | } | 779 | 32 | } | 780 | | | 781 | 4 | COUNTER_SET(_spill_max_rows_of_partition, max_rows); | 782 | 4 | COUNTER_SET(_spill_min_rows_of_partition, min_rows); | 783 | 4 | } |
_ZN5doris28PipelineXSpillSinkLocalStateINS_25PartitionedAggSharedStateEE27update_max_min_rows_counterEv Line | Count | Source | 768 | 463 | void update_max_min_rows_counter() { | 769 | 463 | int64_t max_rows = 0; | 770 | 463 | int64_t min_rows = std::numeric_limits<int64_t>::max(); | 771 | | | 772 | 2.02k | for (auto rows : _rows_in_partitions) { | 773 | 2.02k | if (rows > max_rows) { | 774 | 7 | max_rows = rows; | 775 | 7 | } | 776 | 2.02k | if (rows < min_rows) { | 777 | 463 | min_rows = rows; | 778 | 463 | } | 779 | 2.02k | } | 780 | | | 781 | 463 | COUNTER_SET(_spill_max_rows_of_partition, max_rows); | 782 | 463 | COUNTER_SET(_spill_min_rows_of_partition, min_rows); | 783 | 463 | } |
|
784 | | |
785 | | std::vector<int64_t> _rows_in_partitions; |
786 | | |
787 | | // Total time of spill, including spill task scheduling time, |
788 | | // serialize block time, write disk file time, |
789 | | // and read disk file time, deserialize block time etc. |
790 | | RuntimeProfile::Counter* _spill_total_timer = nullptr; |
791 | | |
792 | | // Shared spill write counters |
793 | | SpillWriteCounters _write_counters; |
794 | | // Backward-compatible aliases for commonly accessed write counters |
795 | | RuntimeProfile::Counter*& _spill_write_file_timer = _write_counters.spill_write_file_timer; |
796 | | RuntimeProfile::Counter*& _spill_write_serialize_block_timer = |
797 | | _write_counters.spill_write_serialize_block_timer; |
798 | | RuntimeProfile::Counter*& _spill_write_block_count = _write_counters.spill_write_block_count; |
799 | | RuntimeProfile::Counter*& _spill_write_block_data_size = |
800 | | _write_counters.spill_write_block_data_size; |
801 | | RuntimeProfile::Counter*& _spill_write_rows_count = _write_counters.spill_write_rows_count; |
802 | | |
803 | | // Sink-only counters |
804 | | // Total bytes written to spill files (required by SpillFileWriter) |
805 | | RuntimeProfile::Counter* _spill_write_file_total_size = nullptr; |
806 | | // Total number of spill files created (required by SpillFileWriter) |
807 | | RuntimeProfile::Counter* _spill_file_total_count = nullptr; |
808 | | RuntimeProfile::Counter* _spill_max_rows_of_partition = nullptr; |
809 | | RuntimeProfile::Counter* _spill_min_rows_of_partition = nullptr; |
810 | | }; |
811 | | |
812 | | class OperatorXBase : public OperatorBase { |
813 | | public: |
814 | | OperatorXBase(ObjectPool* pool, const TPlanNode& tnode, const int operator_id, |
815 | | const DescriptorTbl& descs) |
816 | 873k | : OperatorBase(tnode.__isset.is_serial_operator && tnode.is_serial_operator), |
817 | 873k | _operator_id(operator_id), |
818 | 873k | _node_id(tnode.node_id), |
819 | 873k | _type(tnode.node_type), |
820 | 873k | _pool(pool), |
821 | 873k | _tuple_ids(tnode.row_tuples), |
822 | 873k | _row_descriptor(descs, tnode.row_tuples), |
823 | 873k | _resource_profile(tnode.resource_profile), |
824 | 873k | _limit(tnode.limit) { |
825 | 873k | if (tnode.__isset.output_tuple_id) { |
826 | 367k | _output_row_descriptor = |
827 | 367k | std::make_unique<RowDescriptor>(descs, std::vector {tnode.output_tuple_id}); |
828 | 367k | } |
829 | 873k | if (!tnode.intermediate_output_tuple_id_list.empty()) { |
830 | | // common subexpression elimination |
831 | 4.01k | _intermediate_output_row_descriptor.reserve( |
832 | 4.01k | tnode.intermediate_output_tuple_id_list.size()); |
833 | 8.16k | for (auto output_tuple_id : tnode.intermediate_output_tuple_id_list) { |
834 | 8.16k | _intermediate_output_row_descriptor.push_back( |
835 | 8.16k | RowDescriptor(descs, std::vector {output_tuple_id})); |
836 | 8.16k | } |
837 | 4.01k | } |
838 | 873k | } |
839 | | |
840 | | OperatorXBase(ObjectPool* pool, int node_id, int operator_id) |
841 | 8.74k | : OperatorBase(), |
842 | 8.74k | _operator_id(operator_id), |
843 | 8.74k | _node_id(node_id), |
844 | 8.74k | _pool(pool), |
845 | 8.74k | _limit(-1) {} |
846 | | |
847 | | #ifdef BE_TEST |
848 | | OperatorXBase() : _operator_id(-1), _node_id(0), _limit(-1) {}; |
849 | | #endif |
850 | | virtual Status init(const TPlanNode& tnode, RuntimeState* state); |
851 | 0 | Status init(const TDataSink& tsink) override { |
852 | 0 | throw Exception(Status::FatalError("should not reach here!")); |
853 | 0 | } |
854 | 0 | virtual Status init(TLocalPartitionType::type type) { |
855 | 0 | throw Exception(Status::FatalError("should not reach here!")); |
856 | 0 | } |
857 | 0 | [[noreturn]] virtual const std::vector<TRuntimeFilterDesc>& runtime_filter_descs() { |
858 | 0 | throw doris::Exception(ErrorCode::NOT_IMPLEMENTED_ERROR, _op_name); |
859 | 0 | } |
860 | | |
861 | | // Per-fragment shared partition-boundary parse result, used for |
862 | | // runtime-filter partition pruning. Returns nullptr for operators that |
863 | | // don't support this feature (default). Scan operators override to expose |
864 | | // their parsed boundaries; the per-instance pruning state lives on the |
865 | | // ScanLocalState. This sits on the generic OperatorXBase so non-templated |
866 | | // ScanLocalStateBase methods can fetch it without down-casting `_parent` |
867 | | // to a specific scan type. |
868 | 0 | virtual const ParsedPartitionBoundaries* parsed_partition_boundaries() const { return nullptr; } |
869 | 4.52M | [[nodiscard]] std::string get_name() const override { return _op_name; } |
870 | 6.87M | [[nodiscard]] virtual bool need_more_input_data(RuntimeState* state) const { return true; } |
871 | 8.93M | bool is_blockable(RuntimeState* state) const override { |
872 | 8.93M | return state->get_sink_local_state()->is_blockable() || _blockable; |
873 | 8.93M | } |
874 | | |
875 | | Status prepare(RuntimeState* state) override; |
876 | | |
877 | | Status terminate(RuntimeState* state) override; |
878 | 7.48M | [[nodiscard]] Status get_block(RuntimeState* state, Block* block, bool* eos) { |
879 | 7.48M | RETURN_IF_ERROR(get_block_impl(state, block, eos)); |
880 | 7.48M | RETURN_IF_ERROR(block->check_column_and_type_not_null()); |
881 | 7.48M | RETURN_IF_ERROR(block->check_type_and_column()); |
882 | 7.48M | return Status::OK(); |
883 | 7.48M | } |
884 | | |
885 | | [[nodiscard]] virtual Status get_block_impl(RuntimeState* state, Block* block, bool* eos) = 0; |
886 | | |
887 | | Status close(RuntimeState* state) override; |
888 | | |
889 | 1.87M | [[nodiscard]] virtual const RowDescriptor& intermediate_row_desc() const { |
890 | 1.87M | return _row_descriptor; |
891 | 1.87M | } |
892 | | |
893 | 8.16k | [[nodiscard]] const RowDescriptor& intermediate_row_desc(int idx) { |
894 | 8.16k | if (idx == 0) { |
895 | 4.02k | return intermediate_row_desc(); |
896 | 4.02k | } |
897 | 8.16k | DCHECK((idx - 1) < _intermediate_output_row_descriptor.size()); |
898 | 4.14k | return _intermediate_output_row_descriptor[idx - 1]; |
899 | 8.16k | } |
900 | | |
901 | 864k | [[nodiscard]] const RowDescriptor& projections_row_desc() const { |
902 | 864k | if (_intermediate_output_row_descriptor.empty()) { |
903 | 861k | return intermediate_row_desc(); |
904 | 861k | } else { |
905 | 3.81k | return _intermediate_output_row_descriptor.back(); |
906 | 3.81k | } |
907 | 864k | } |
908 | | |
909 | | // Returns the memory this single operator expects to allocate in the next |
910 | | // execution round. Each operator reports only its OWN requirement — the |
911 | | // pipeline task is responsible for summing all operators + sink. |
912 | | // After the value is consumed the caller should invoke |
913 | | // reset_reserve_mem_size() so the next round starts from zero. |
914 | | // If this method is not overridden by a subclass, its default value is the |
915 | | // minimum operator memory (typically 1 MB). |
916 | 0 | [[nodiscard]] virtual size_t get_reserve_mem_size(RuntimeState* state) { |
917 | 0 | return state->minimum_operator_memory_required_bytes(); |
918 | 0 | } |
919 | | |
920 | | virtual std::string debug_string(int indentation_level = 0) const; |
921 | | |
922 | | virtual std::string debug_string(RuntimeState* state, int indentation_level = 0) const; |
923 | | |
924 | | virtual Status setup_local_state(RuntimeState* state, LocalStateInfo& info) = 0; |
925 | | |
926 | | template <class TARGET> |
927 | 28.7M | TARGET& cast() { |
928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) |
929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() |
930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); |
931 | 28.7M | return reinterpret_cast<TARGET&>(*this); |
932 | 28.7M | } _ZN5doris13OperatorXBase4castINS_17OlapScanOperatorXEEERT_v Line | Count | Source | 927 | 21.9M | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 21.9M | return reinterpret_cast<TARGET&>(*this); | 932 | 21.9M | } |
Unexecuted instantiation: _ZN5doris13OperatorXBase4castINS_17JDBCScanOperatorXEEERT_v _ZN5doris13OperatorXBase4castINS_17FileScanOperatorXEEERT_v Line | Count | Source | 927 | 1.83M | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 1.83M | return reinterpret_cast<TARGET&>(*this); | 932 | 1.83M | } |
_ZN5doris13OperatorXBase4castINS_17MetaScanOperatorXEEERT_v Line | Count | Source | 927 | 52.5k | TARGET& cast() { | 928 | 52.5k | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 52.5k | return reinterpret_cast<TARGET&>(*this); | 932 | 52.5k | } |
_ZN5doris13OperatorXBase4castINS_20GroupCommitOperatorXEEERT_v Line | Count | Source | 927 | 539 | TARGET& cast() { | 928 | 539 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 539 | return reinterpret_cast<TARGET&>(*this); | 932 | 539 | } |
_ZN5doris13OperatorXBase4castINS_22HashJoinProbeOperatorXEEERT_v Line | Count | Source | 927 | 356k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 356k | return reinterpret_cast<TARGET&>(*this); | 932 | 356k | } |
_ZN5doris13OperatorXBase4castINS_28NestedLoopJoinProbeOperatorXEEERT_v Line | Count | Source | 927 | 2.10M | TARGET& cast() { | 928 | 2.10M | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 42 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 42 | << " and expect type is" << typeid(TARGET).name(); | 931 | 2.10M | return reinterpret_cast<TARGET&>(*this); | 932 | 2.10M | } |
_ZN5doris13OperatorXBase4castINS_33PartitionedHashJoinProbeOperatorXEEERT_v Line | Count | Source | 927 | 21 | TARGET& cast() { | 928 | 21 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 21 | return reinterpret_cast<TARGET&>(*this); | 932 | 21 | } |
_ZN5doris13OperatorXBase4castINS_24SpillSortSourceOperatorXEEERT_v Line | Count | Source | 927 | 33 | TARGET& cast() { | 928 | 33 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 33 | return reinterpret_cast<TARGET&>(*this); | 932 | 33 | } |
_ZN5doris13OperatorXBase4castINS_29LocalMergeSortSourceOperatorXEEERT_v Line | Count | Source | 927 | 85.6k | TARGET& cast() { | 928 | 85.6k | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 85.6k | return reinterpret_cast<TARGET&>(*this); | 932 | 85.6k | } |
_ZN5doris13OperatorXBase4castINS_18AggSourceOperatorXEEERT_v Line | Count | Source | 927 | 219k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 219k | return reinterpret_cast<TARGET&>(*this); | 932 | 219k | } |
_ZN5doris13OperatorXBase4castINS_26BucketedAggSourceOperatorXEEERT_v Line | Count | Source | 927 | 1.49k | TARGET& cast() { | 928 | 1.49k | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 1.49k | return reinterpret_cast<TARGET&>(*this); | 932 | 1.49k | } |
_ZN5doris13OperatorXBase4castINS_29PartitionedAggSourceOperatorXEEERT_v Line | Count | Source | 927 | 129 | TARGET& cast() { | 928 | 129 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 129 | return reinterpret_cast<TARGET&>(*this); | 932 | 129 | } |
_ZN5doris13OperatorXBase4castINS_22TableFunctionOperatorXEEERT_v Line | Count | Source | 927 | 28.8k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 28.8k | return reinterpret_cast<TARGET&>(*this); | 932 | 28.8k | } |
_ZN5doris13OperatorXBase4castINS_23ExchangeSourceOperatorXEEERT_v Line | Count | Source | 927 | 737k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 737k | return reinterpret_cast<TARGET&>(*this); | 932 | 737k | } |
_ZN5doris13OperatorXBase4castINS_15RepeatOperatorXEEERT_v Line | Count | Source | 927 | 6.65k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 6.65k | return reinterpret_cast<TARGET&>(*this); | 932 | 6.65k | } |
_ZN5doris13OperatorXBase4castINS_20UnionSourceOperatorXEEERT_v Line | Count | Source | 927 | 167k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 167k | return reinterpret_cast<TARGET&>(*this); | 932 | 167k | } |
_ZN5doris13OperatorXBase4castINS_36MultiCastDataStreamerSourceOperatorXEEERT_v Line | Count | Source | 927 | 20.7k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 20.7k | return reinterpret_cast<TARGET&>(*this); | 932 | 20.7k | } |
_ZN5doris13OperatorXBase4castINS_18SetSourceOperatorXILb1EEEEERT_v Line | Count | Source | 927 | 5.32k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 5.32k | return reinterpret_cast<TARGET&>(*this); | 932 | 5.32k | } |
_ZN5doris13OperatorXBase4castINS_18SetSourceOperatorXILb0EEEEERT_v Line | Count | Source | 927 | 5.21k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 5.21k | return reinterpret_cast<TARGET&>(*this); | 932 | 5.21k | } |
_ZN5doris13OperatorXBase4castINS_22DataGenSourceOperatorXEEERT_v Line | Count | Source | 927 | 489 | TARGET& cast() { | 928 | 489 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 489 | return reinterpret_cast<TARGET&>(*this); | 932 | 489 | } |
_ZN5doris13OperatorXBase4castINS_19SchemaScanOperatorXEEERT_v Line | Count | Source | 927 | 2.08k | TARGET& cast() { | 928 | 2.08k | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 1 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 1 | << " and expect type is" << typeid(TARGET).name(); | 931 | 2.08k | return reinterpret_cast<TARGET&>(*this); | 932 | 2.08k | } |
_ZN5doris13OperatorXBase4castINS_20CacheSourceOperatorXEEERT_v Line | Count | Source | 927 | 34 | TARGET& cast() { | 928 | 34 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 34 | return reinterpret_cast<TARGET&>(*this); | 932 | 34 | } |
_ZN5doris13OperatorXBase4castINS_21RecCTESourceOperatorXEEERT_v Line | Count | Source | 927 | 652 | TARGET& cast() { | 928 | 652 | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 0 | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 0 | << " and expect type is" << typeid(TARGET).name(); | 931 | 652 | return reinterpret_cast<TARGET&>(*this); | 932 | 652 | } |
_ZN5doris13OperatorXBase4castINS_21StreamingAggOperatorXEEERT_v Line | Count | Source | 927 | 254k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 254k | return reinterpret_cast<TARGET&>(*this); | 932 | 254k | } |
_ZN5doris13OperatorXBase4castINS_29DistinctStreamingAggOperatorXEEERT_v Line | Count | Source | 927 | 989k | TARGET& cast() { | 928 | 18.4E | DCHECK(dynamic_cast<TARGET*>(this)) | 929 | 18.4E | << " Mismatch type! Current type is " << typeid(*this).name() | 930 | 18.4E | << " and expect type is" << typeid(TARGET).name(); | 931 | 989k | return reinterpret_cast<TARGET&>(*this); | 932 | 989k | } |
|
933 | | template <class TARGET> |
934 | | const TARGET& cast() const { |
935 | | DCHECK(dynamic_cast<const TARGET*>(this)) |
936 | | << " Mismatch type! Current type is " << typeid(*this).name() |
937 | | << " and expect type is" << typeid(TARGET).name(); |
938 | | return reinterpret_cast<const TARGET&>(*this); |
939 | | } |
940 | | |
941 | 86.7k | [[nodiscard]] OperatorPtr get_child() { return _child; } |
942 | | |
943 | 10.7k | [[nodiscard]] VExprContextSPtrs& conjuncts() { return _conjuncts; } |
944 | 6.15k | [[nodiscard]] VExprContextSPtrs& projections() { return _projections; } |
945 | 2.14M | [[nodiscard]] virtual RowDescriptor& row_descriptor() { return _row_descriptor; } |
946 | | |
947 | 76.5M | [[nodiscard]] int operator_id() const { return _operator_id; } |
948 | 11.3M | [[nodiscard]] int node_id() const override { return _node_id; } |
949 | 3.80M | [[nodiscard]] int nereids_id() const { return _nereids_id; } |
950 | | |
951 | 591k | [[nodiscard]] int64_t limit() const { return _limit; } |
952 | | |
953 | 12.1M | [[nodiscard]] const RowDescriptor& row_desc() const override { |
954 | 12.1M | return _output_row_descriptor ? *_output_row_descriptor : _row_descriptor; |
955 | 12.1M | } |
956 | | |
957 | 1.64M | [[nodiscard]] const RowDescriptor* output_row_descriptor() { |
958 | 1.64M | return _output_row_descriptor.get(); |
959 | 1.64M | } |
960 | | |
961 | 857k | bool has_output_row_desc() const { return _output_row_descriptor != nullptr; } |
962 | | |
963 | | [[nodiscard]] virtual Status get_block_after_projects(RuntimeState* state, Block* block, |
964 | | bool* eos); |
965 | | |
966 | | /// Only use in vectorized exec engine try to do projections to trans _row_desc -> _output_row_desc |
967 | | Status do_projections(RuntimeState* state, Block* origin_block, Block* output_block) const; |
968 | 1.35M | void set_parallel_tasks(int parallel_tasks) { _parallel_tasks = parallel_tasks; } |
969 | 105 | int parallel_tasks() const { return _parallel_tasks; } |
970 | | |
971 | | // To keep compatibility with older FE |
972 | 1 | void set_serial_operator() { _is_serial_operator = true; } |
973 | | |
974 | | // Resets this operator's estimated memory usage to zero so that the next |
975 | | // call to get_reserve_mem_size() starts fresh. The pipeline task calls |
976 | | // this after consuming the reserve size for all operators in a round. |
977 | 0 | virtual void reset_reserve_mem_size(RuntimeState* state) {} |
978 | | |
979 | | protected: |
980 | | template <typename Dependency> |
981 | | friend class PipelineXLocalState; |
982 | | friend class PipelineXLocalStateBase; |
983 | | friend class Scanner; |
984 | | const int _operator_id; |
985 | | const int _node_id; // unique w/in single plan tree |
986 | | int _nereids_id = -1; |
987 | | TPlanNodeType::type _type; |
988 | | ObjectPool* _pool = nullptr; |
989 | | std::vector<TupleId> _tuple_ids; |
990 | | |
991 | | private: |
992 | | // The expr of operator set to private permissions, as cannot be executed concurrently, |
993 | | // should use local state's expr. |
994 | | VExprContextSPtrs _conjuncts; |
995 | | VExprContextSPtrs _projections; |
996 | | // Used in common subexpression elimination to compute intermediate results. |
997 | | std::vector<VExprContextSPtrs> _intermediate_projections; |
998 | | |
999 | | protected: |
1000 | | RowDescriptor _row_descriptor; |
1001 | | std::unique_ptr<RowDescriptor> _output_row_descriptor = nullptr; |
1002 | | std::vector<RowDescriptor> _intermediate_output_row_descriptor; |
1003 | | |
1004 | | /// Resource information sent from the frontend. |
1005 | | const TBackendResourceProfile _resource_profile; |
1006 | | |
1007 | | int64_t _limit; // -1: no limit |
1008 | | |
1009 | | uint32_t _debug_point_count = 0; |
1010 | | std::atomic_uint32_t _bytes_per_row = 0; |
1011 | | |
1012 | | std::string _op_name; |
1013 | | int _parallel_tasks = 0; |
1014 | | |
1015 | | //_keep_origin is used to avoid copying during projection, |
1016 | | // currently set to false only in the nestloop join. |
1017 | | bool _keep_origin = true; |
1018 | | |
1019 | | // _blockable is true if the operator contains expressions that may block execution |
1020 | | bool _blockable = false; |
1021 | | }; |
1022 | | |
1023 | | template <typename LocalStateType> |
1024 | | class OperatorX : public OperatorXBase { |
1025 | | public: |
1026 | | OperatorX(ObjectPool* pool, const TPlanNode& tnode, const int operator_id, |
1027 | | const DescriptorTbl& descs) |
1028 | 874k | : OperatorXBase(pool, tnode, operator_id, descs) {}_ZN5doris9OperatorXINS_21UnionSourceLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 54.5k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_29PartitionSortSourceLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 68 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_25MaterializationLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 1.64k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_19SetSourceLocalStateILb1EEEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 168 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_19SetSourceLocalStateILb0EEEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 159 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_18EmptySetLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 1.70k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_16SelectLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 2.56k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_22RecCTESourceLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 163 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_20RecCTEScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 2.18k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_29LocalExchangeSourceLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 117k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_23HashJoinProbeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 82.4k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_18OlapScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 221k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_21GroupCommitLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 77 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
Unexecuted instantiation: _ZN5doris9OperatorXINS_18JDBCScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE _ZN5doris9OperatorXINS_18FileScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 26.0k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_18AnalyticLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 1.82k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_14SortLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 2.47k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_19SpillSortLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 29 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_24LocalMergeSortLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 42.9k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_13AggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 55.2k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_21BucketedAggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 94 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_24PartitionedAggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 140 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_23TableFunctionLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 925 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_18ExchangeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 154k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_16RepeatLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 327 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_29NestedLoopJoinProbeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 6.17k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_23AssertNumRowsLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 218 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
Unexecuted instantiation: _ZN5doris9OperatorXINS_35MultiCastDataStreamSourceLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE _ZN5doris9OperatorXINS_17DataGenLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 486 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_20SchemaScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 2.08k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_18MetaScanLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 6.56k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_34PartitionedHashJoinProbeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 52 | : OperatorXBase(pool, tnode, operator_id, descs) {} |
Unexecuted instantiation: _ZN5doris9OperatorXINS_21CacheSourceLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE _ZN5doris9OperatorXINS_22StreamingAggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 1.98k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
_ZN5doris9OperatorXINS_30DistinctStreamingAggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1028 | 88.5k | : OperatorXBase(pool, tnode, operator_id, descs) {} |
|
1029 | | OperatorX(ObjectPool* pool, int node_id, int operator_id) |
1030 | 8.72k | : OperatorXBase(pool, node_id, operator_id) {};_ZN5doris9OperatorXINS_21CacheSourceLocalStateEEC2EPNS_10ObjectPoolEii Line | Count | Source | 1030 | 10 | : OperatorXBase(pool, node_id, operator_id) {}; |
_ZN5doris9OperatorXINS_29LocalExchangeSourceLocalStateEEC2EPNS_10ObjectPoolEii Line | Count | Source | 1030 | 1.18k | : OperatorXBase(pool, node_id, operator_id) {}; |
_ZN5doris9OperatorXINS_35MultiCastDataStreamSourceLocalStateEEC2EPNS_10ObjectPoolEii Line | Count | Source | 1030 | 7.53k | : OperatorXBase(pool, node_id, operator_id) {}; |
Unexecuted instantiation: _ZN5doris9OperatorXINS_23HashJoinProbeLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18OlapScanLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_21GroupCommitLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18JDBCScanLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18FileScanLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18AnalyticLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_14SortLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_19SpillSortLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_24LocalMergeSortLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_13AggLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_21BucketedAggLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_24PartitionedAggLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_23TableFunctionLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18ExchangeLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_16RepeatLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_29NestedLoopJoinProbeLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_23AssertNumRowsLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18EmptySetLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_21UnionSourceLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_29PartitionSortSourceLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_19SetSourceLocalStateILb1EEEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_19SetSourceLocalStateILb0EEEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_17DataGenLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_20SchemaScanLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_18MetaScanLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_34PartitionedHashJoinProbeLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_22RecCTESourceLocalStateEEC2EPNS_10ObjectPoolEii Unexecuted instantiation: _ZN5doris9OperatorXINS_20RecCTEScanLocalStateEEC2EPNS_10ObjectPoolEii |
1031 | | |
1032 | | #ifdef BE_TEST |
1033 | | OperatorX() = default; |
1034 | | #endif |
1035 | | |
1036 | | ~OperatorX() override = default; |
1037 | | |
1038 | | Status setup_local_state(RuntimeState* state, LocalStateInfo& info) override; |
1039 | | using LocalState = LocalStateType; |
1040 | 22.2M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { |
1041 | 22.2M | return state->get_local_state(operator_id())->template cast<LocalState>(); |
1042 | 22.2M | } _ZNK5doris9OperatorXINS_22RecCTESourceLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 12.6k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 12.6k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 12.6k | } |
_ZNK5doris9OperatorXINS_21CacheSourceLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 79 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 79 | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 79 | } |
_ZNK5doris9OperatorXINS_29LocalExchangeSourceLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 3.41M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 3.41M | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 3.41M | } |
_ZNK5doris9OperatorXINS_35MultiCastDataStreamSourceLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 92.5k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 92.5k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 92.5k | } |
_ZNK5doris9OperatorXINS_18OlapScanLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 3.99M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 3.99M | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 3.99M | } |
_ZNK5doris9OperatorXINS_21GroupCommitLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 4.58M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 4.58M | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 4.58M | } |
Unexecuted instantiation: _ZNK5doris9OperatorXINS_18JDBCScanLocalStateEE15get_local_stateEPNS_12RuntimeStateE _ZNK5doris9OperatorXINS_18FileScanLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 441k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 441k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 441k | } |
_ZNK5doris9OperatorXINS_23HashJoinProbeLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 620k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 620k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 620k | } |
_ZNK5doris9OperatorXINS_34PartitionedHashJoinProbeLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 59 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 59 | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 59 | } |
_ZNK5doris9OperatorXINS_29NestedLoopJoinProbeLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 149k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 149k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 149k | } |
_ZNK5doris9OperatorXINS_21UnionSourceLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 327k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 327k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 327k | } |
_ZNK5doris9OperatorXINS_29PartitionSortSourceLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 3.64k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 3.64k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 3.64k | } |
_ZNK5doris9OperatorXINS_25MaterializationLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 37.8k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 37.8k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 37.8k | } |
_ZNK5doris9OperatorXINS_19SetSourceLocalStateILb1EEEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 8.03k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 8.03k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 8.03k | } |
_ZNK5doris9OperatorXINS_19SetSourceLocalStateILb0EEEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 8.68k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 8.68k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 8.68k | } |
_ZNK5doris9OperatorXINS_18EmptySetLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 3.41k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 3.41k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 3.41k | } |
_ZNK5doris9OperatorXINS_18MetaScanLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 20.1k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 20.1k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 20.1k | } |
_ZNK5doris9OperatorXINS_16SelectLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 29.2k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 29.2k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 29.2k | } |
_ZNK5doris9OperatorXINS_20RecCTEScanLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 12.7k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 12.7k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 12.7k | } |
_ZNK5doris9OperatorXINS_23TableFunctionLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 31.3k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 31.3k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 31.3k | } |
_ZNK5doris9OperatorXINS_18ExchangeLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 2.05M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 2.05M | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 2.05M | } |
_ZNK5doris9OperatorXINS_30DistinctStreamingAggLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 4.22M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 4.22M | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 4.22M | } |
_ZNK5doris9OperatorXINS_22StreamingAggLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 250k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 250k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 250k | } |
_ZNK5doris9OperatorXINS_13AggLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 450k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 450k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 450k | } |
_ZNK5doris9OperatorXINS_24PartitionedAggLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 570 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 570 | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 570 | } |
_ZNK5doris9OperatorXINS_21BucketedAggLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 14.9k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 14.9k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 14.9k | } |
_ZNK5doris9OperatorXINS_14SortLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 40.7k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 40.7k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 40.7k | } |
_ZNK5doris9OperatorXINS_19SpillSortLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 725 | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 725 | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 725 | } |
_ZNK5doris9OperatorXINS_24LocalMergeSortLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 1.34M | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 1.34M | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 1.34M | } |
_ZNK5doris9OperatorXINS_18AnalyticLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 40.2k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 40.2k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 40.2k | } |
_ZNK5doris9OperatorXINS_16RepeatLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 16.9k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 16.9k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 16.9k | } |
_ZNK5doris9OperatorXINS_23AssertNumRowsLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 1.28k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 1.28k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 1.28k | } |
_ZNK5doris9OperatorXINS_17DataGenLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 46.2k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 46.2k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 46.2k | } |
_ZNK5doris9OperatorXINS_20SchemaScanLocalStateEE15get_local_stateEPNS_12RuntimeStateE Line | Count | Source | 1040 | 11.2k | [[nodiscard]] LocalState& get_local_state(RuntimeState* state) const { | 1041 | 11.2k | return state->get_local_state(operator_id())->template cast<LocalState>(); | 1042 | 11.2k | } |
|
1043 | | |
1044 | | // Returns memory this single operator expects to allocate in the next round. |
1045 | | // Does NOT include child operators — the pipeline task iterates all |
1046 | | // operators itself. |
1047 | 3.20M | size_t get_reserve_mem_size(RuntimeState* state) override { |
1048 | 3.20M | auto& local_state = get_local_state(state); |
1049 | 3.20M | auto estimated_size = local_state.estimate_memory_usage(); |
1050 | 3.20M | if (estimated_size < state->minimum_operator_memory_required_bytes()) { |
1051 | 3.20M | estimated_size = state->minimum_operator_memory_required_bytes(); |
1052 | 3.20M | } |
1053 | 3.20M | return estimated_size; |
1054 | 3.20M | } _ZN5doris9OperatorXINS_22RecCTESourceLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 3.51k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 3.51k | auto& local_state = get_local_state(state); | 1049 | 3.51k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 3.51k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 3.51k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 3.51k | } | 1053 | 3.51k | return estimated_size; | 1054 | 3.51k | } |
_ZN5doris9OperatorXINS_21CacheSourceLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 23 | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 23 | auto& local_state = get_local_state(state); | 1049 | 23 | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 23 | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 23 | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 23 | } | 1053 | 23 | return estimated_size; | 1054 | 23 | } |
_ZN5doris9OperatorXINS_29LocalExchangeSourceLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 1.14M | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 1.14M | auto& local_state = get_local_state(state); | 1049 | 1.14M | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 1.14M | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 1.14M | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 1.14M | } | 1053 | 1.14M | return estimated_size; | 1054 | 1.14M | } |
_ZN5doris9OperatorXINS_35MultiCastDataStreamSourceLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 30.9k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 30.9k | auto& local_state = get_local_state(state); | 1049 | 30.9k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 30.9k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 30.9k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 30.9k | } | 1053 | 30.9k | return estimated_size; | 1054 | 30.9k | } |
_ZN5doris9OperatorXINS_23HashJoinProbeLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 144k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 144k | auto& local_state = get_local_state(state); | 1049 | 144k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 144k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 144k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 144k | } | 1053 | 144k | return estimated_size; | 1054 | 144k | } |
_ZN5doris9OperatorXINS_34PartitionedHashJoinProbeLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 1 | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 1 | auto& local_state = get_local_state(state); | 1049 | 1 | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 1 | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 1 | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 1 | } | 1053 | 1 | return estimated_size; | 1054 | 1 | } |
_ZN5doris9OperatorXINS_29NestedLoopJoinProbeLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 35.2k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 35.2k | auto& local_state = get_local_state(state); | 1049 | 35.2k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 35.2k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 35.2k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 35.2k | } | 1053 | 35.2k | return estimated_size; | 1054 | 35.2k | } |
_ZN5doris9OperatorXINS_21UnionSourceLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 66.5k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 66.5k | auto& local_state = get_local_state(state); | 1049 | 66.5k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 66.5k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 66.5k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 66.5k | } | 1053 | 66.5k | return estimated_size; | 1054 | 66.5k | } |
_ZN5doris9OperatorXINS_29PartitionSortSourceLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 1.08k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 1.08k | auto& local_state = get_local_state(state); | 1049 | 1.08k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 1.08k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 1.08k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 1.08k | } | 1053 | 1.08k | return estimated_size; | 1054 | 1.08k | } |
_ZN5doris9OperatorXINS_25MaterializationLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 4.82k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 4.82k | auto& local_state = get_local_state(state); | 1049 | 4.82k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 4.82k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 4.82k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 4.82k | } | 1053 | 4.82k | return estimated_size; | 1054 | 4.82k | } |
_ZN5doris9OperatorXINS_19SetSourceLocalStateILb1EEEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 2.67k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 2.67k | auto& local_state = get_local_state(state); | 1049 | 2.67k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 2.68k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 2.68k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 2.68k | } | 1053 | 2.67k | return estimated_size; | 1054 | 2.67k | } |
_ZN5doris9OperatorXINS_19SetSourceLocalStateILb0EEEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 2.61k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 2.61k | auto& local_state = get_local_state(state); | 1049 | 2.61k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 2.61k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 2.61k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 2.61k | } | 1053 | 2.61k | return estimated_size; | 1054 | 2.61k | } |
_ZN5doris9OperatorXINS_18EmptySetLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 1.70k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 1.70k | auto& local_state = get_local_state(state); | 1049 | 1.70k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 1.70k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 1.70k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 1.70k | } | 1053 | 1.70k | return estimated_size; | 1054 | 1.70k | } |
_ZN5doris9OperatorXINS_16SelectLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 9.74k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 9.74k | auto& local_state = get_local_state(state); | 1049 | 9.74k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 9.74k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 9.74k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 9.74k | } | 1053 | 9.74k | return estimated_size; | 1054 | 9.74k | } |
_ZN5doris9OperatorXINS_20RecCTEScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 4.24k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 4.24k | auto& local_state = get_local_state(state); | 1049 | 4.24k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 4.24k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 4.24k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 4.24k | } | 1053 | 4.24k | return estimated_size; | 1054 | 4.24k | } |
Unexecuted instantiation: _ZN5doris9OperatorXINS_18OlapScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Unexecuted instantiation: _ZN5doris9OperatorXINS_21GroupCommitLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Unexecuted instantiation: _ZN5doris9OperatorXINS_18JDBCScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE _ZN5doris9OperatorXINS_18ExchangeLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 686k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 686k | auto& local_state = get_local_state(state); | 1049 | 686k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 686k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 686k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 686k | } | 1053 | 686k | return estimated_size; | 1054 | 686k | } |
_ZN5doris9OperatorXINS_30DistinctStreamingAggLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 490k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 490k | auto& local_state = get_local_state(state); | 1049 | 490k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 491k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 491k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 491k | } | 1053 | 490k | return estimated_size; | 1054 | 490k | } |
_ZN5doris9OperatorXINS_22StreamingAggLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 31.3k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 31.3k | auto& local_state = get_local_state(state); | 1049 | 31.3k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 31.3k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 31.3k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 31.3k | } | 1053 | 31.3k | return estimated_size; | 1054 | 31.3k | } |
_ZN5doris9OperatorXINS_13AggLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 150k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 150k | auto& local_state = get_local_state(state); | 1049 | 150k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 150k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 150k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 150k | } | 1053 | 150k | return estimated_size; | 1054 | 150k | } |
_ZN5doris9OperatorXINS_24PartitionedAggLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 114 | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 114 | auto& local_state = get_local_state(state); | 1049 | 114 | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 114 | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 114 | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 114 | } | 1053 | 114 | return estimated_size; | 1054 | 114 | } |
_ZN5doris9OperatorXINS_21BucketedAggLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 4.98k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 4.98k | auto& local_state = get_local_state(state); | 1049 | 4.98k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 4.99k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 4.99k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 4.99k | } | 1053 | 4.98k | return estimated_size; | 1054 | 4.98k | } |
_ZN5doris9OperatorXINS_14SortLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 13.4k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 13.4k | auto& local_state = get_local_state(state); | 1049 | 13.4k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 13.4k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 13.4k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 13.4k | } | 1053 | 13.4k | return estimated_size; | 1054 | 13.4k | } |
_ZN5doris9OperatorXINS_19SpillSortLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 217 | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 217 | auto& local_state = get_local_state(state); | 1049 | 217 | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 217 | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 217 | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 217 | } | 1053 | 217 | return estimated_size; | 1054 | 217 | } |
_ZN5doris9OperatorXINS_24LocalMergeSortLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 335k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 335k | auto& local_state = get_local_state(state); | 1049 | 335k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 335k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 335k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 335k | } | 1053 | 335k | return estimated_size; | 1054 | 335k | } |
_ZN5doris9OperatorXINS_18AnalyticLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 13.4k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 13.4k | auto& local_state = get_local_state(state); | 1049 | 13.4k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 13.4k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 13.4k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 13.4k | } | 1053 | 13.4k | return estimated_size; | 1054 | 13.4k | } |
_ZN5doris9OperatorXINS_16RepeatLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 3.85k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 3.85k | auto& local_state = get_local_state(state); | 1049 | 3.85k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 3.86k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 3.86k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 3.86k | } | 1053 | 3.85k | return estimated_size; | 1054 | 3.85k | } |
_ZN5doris9OperatorXINS_23TableFunctionLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 6.54k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 6.54k | auto& local_state = get_local_state(state); | 1049 | 6.54k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 6.55k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 6.55k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 6.55k | } | 1053 | 6.54k | return estimated_size; | 1054 | 6.54k | } |
_ZN5doris9OperatorXINS_23AssertNumRowsLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 428 | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 428 | auto& local_state = get_local_state(state); | 1049 | 428 | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 428 | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 428 | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 428 | } | 1053 | 428 | return estimated_size; | 1054 | 428 | } |
_ZN5doris9OperatorXINS_17DataGenLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 15.4k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 15.4k | auto& local_state = get_local_state(state); | 1049 | 15.4k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 15.4k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 15.4k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 15.4k | } | 1053 | 15.4k | return estimated_size; | 1054 | 15.4k | } |
_ZN5doris9OperatorXINS_20SchemaScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1047 | 3.75k | size_t get_reserve_mem_size(RuntimeState* state) override { | 1048 | 3.75k | auto& local_state = get_local_state(state); | 1049 | 3.75k | auto estimated_size = local_state.estimate_memory_usage(); | 1050 | 3.75k | if (estimated_size < state->minimum_operator_memory_required_bytes()) { | 1051 | 3.75k | estimated_size = state->minimum_operator_memory_required_bytes(); | 1052 | 3.75k | } | 1053 | 3.75k | return estimated_size; | 1054 | 3.75k | } |
Unexecuted instantiation: _ZN5doris9OperatorXINS_18MetaScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE Unexecuted instantiation: _ZN5doris9OperatorXINS_18FileScanLocalStateEE20get_reserve_mem_sizeEPNS_12RuntimeStateE |
1055 | | |
1056 | 6.22M | void reset_reserve_mem_size(RuntimeState* state) override { |
1057 | 6.22M | auto& local_state = get_local_state(state); |
1058 | 6.22M | local_state.reset_estimate_memory_usage(); |
1059 | 6.22M | } _ZN5doris9OperatorXINS_22RecCTESourceLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 3.51k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 3.51k | auto& local_state = get_local_state(state); | 1058 | 3.51k | local_state.reset_estimate_memory_usage(); | 1059 | 3.51k | } |
_ZN5doris9OperatorXINS_21CacheSourceLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 23 | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 23 | auto& local_state = get_local_state(state); | 1058 | 23 | local_state.reset_estimate_memory_usage(); | 1059 | 23 | } |
_ZN5doris9OperatorXINS_29LocalExchangeSourceLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 1.14M | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 1.14M | auto& local_state = get_local_state(state); | 1058 | 1.14M | local_state.reset_estimate_memory_usage(); | 1059 | 1.14M | } |
_ZN5doris9OperatorXINS_35MultiCastDataStreamSourceLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 30.8k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 30.8k | auto& local_state = get_local_state(state); | 1058 | 30.8k | local_state.reset_estimate_memory_usage(); | 1059 | 30.8k | } |
_ZN5doris9OperatorXINS_18OlapScanLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 1.33M | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 1.33M | auto& local_state = get_local_state(state); | 1058 | 1.33M | local_state.reset_estimate_memory_usage(); | 1059 | 1.33M | } |
_ZN5doris9OperatorXINS_21GroupCommitLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 1.53M | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 1.53M | auto& local_state = get_local_state(state); | 1058 | 1.53M | local_state.reset_estimate_memory_usage(); | 1059 | 1.53M | } |
Unexecuted instantiation: _ZN5doris9OperatorXINS_18JDBCScanLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE _ZN5doris9OperatorXINS_18FileScanLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 147k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 147k | auto& local_state = get_local_state(state); | 1058 | 147k | local_state.reset_estimate_memory_usage(); | 1059 | 147k | } |
_ZN5doris9OperatorXINS_23HashJoinProbeLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 144k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 144k | auto& local_state = get_local_state(state); | 1058 | 144k | local_state.reset_estimate_memory_usage(); | 1059 | 144k | } |
Unexecuted instantiation: _ZN5doris9OperatorXINS_34PartitionedHashJoinProbeLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE _ZN5doris9OperatorXINS_29NestedLoopJoinProbeLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 35.2k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 35.2k | auto& local_state = get_local_state(state); | 1058 | 35.2k | local_state.reset_estimate_memory_usage(); | 1059 | 35.2k | } |
_ZN5doris9OperatorXINS_21UnionSourceLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 66.5k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 66.5k | auto& local_state = get_local_state(state); | 1058 | 66.5k | local_state.reset_estimate_memory_usage(); | 1059 | 66.5k | } |
_ZN5doris9OperatorXINS_29PartitionSortSourceLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 1.08k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 1.08k | auto& local_state = get_local_state(state); | 1058 | 1.08k | local_state.reset_estimate_memory_usage(); | 1059 | 1.08k | } |
_ZN5doris9OperatorXINS_25MaterializationLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 4.82k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 4.82k | auto& local_state = get_local_state(state); | 1058 | 4.82k | local_state.reset_estimate_memory_usage(); | 1059 | 4.82k | } |
_ZN5doris9OperatorXINS_19SetSourceLocalStateILb1EEEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 2.68k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 2.68k | auto& local_state = get_local_state(state); | 1058 | 2.68k | local_state.reset_estimate_memory_usage(); | 1059 | 2.68k | } |
_ZN5doris9OperatorXINS_19SetSourceLocalStateILb0EEEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 2.61k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 2.61k | auto& local_state = get_local_state(state); | 1058 | 2.61k | local_state.reset_estimate_memory_usage(); | 1059 | 2.61k | } |
_ZN5doris9OperatorXINS_18EmptySetLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 1.70k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 1.70k | auto& local_state = get_local_state(state); | 1058 | 1.70k | local_state.reset_estimate_memory_usage(); | 1059 | 1.70k | } |
_ZN5doris9OperatorXINS_18MetaScanLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 6.71k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 6.71k | auto& local_state = get_local_state(state); | 1058 | 6.71k | local_state.reset_estimate_memory_usage(); | 1059 | 6.71k | } |
_ZN5doris9OperatorXINS_16SelectLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 9.74k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 9.74k | auto& local_state = get_local_state(state); | 1058 | 9.74k | local_state.reset_estimate_memory_usage(); | 1059 | 9.74k | } |
_ZN5doris9OperatorXINS_20RecCTEScanLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 4.24k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 4.24k | auto& local_state = get_local_state(state); | 1058 | 4.24k | local_state.reset_estimate_memory_usage(); | 1059 | 4.24k | } |
_ZN5doris9OperatorXINS_18ExchangeLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 686k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 686k | auto& local_state = get_local_state(state); | 1058 | 686k | local_state.reset_estimate_memory_usage(); | 1059 | 686k | } |
_ZN5doris9OperatorXINS_30DistinctStreamingAggLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 491k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 491k | auto& local_state = get_local_state(state); | 1058 | 491k | local_state.reset_estimate_memory_usage(); | 1059 | 491k | } |
_ZN5doris9OperatorXINS_22StreamingAggLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 31.3k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 31.3k | auto& local_state = get_local_state(state); | 1058 | 31.3k | local_state.reset_estimate_memory_usage(); | 1059 | 31.3k | } |
_ZN5doris9OperatorXINS_13AggLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 150k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 150k | auto& local_state = get_local_state(state); | 1058 | 150k | local_state.reset_estimate_memory_usage(); | 1059 | 150k | } |
_ZN5doris9OperatorXINS_24PartitionedAggLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 114 | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 114 | auto& local_state = get_local_state(state); | 1058 | 114 | local_state.reset_estimate_memory_usage(); | 1059 | 114 | } |
_ZN5doris9OperatorXINS_21BucketedAggLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 4.99k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 4.99k | auto& local_state = get_local_state(state); | 1058 | 4.99k | local_state.reset_estimate_memory_usage(); | 1059 | 4.99k | } |
_ZN5doris9OperatorXINS_14SortLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 13.4k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 13.4k | auto& local_state = get_local_state(state); | 1058 | 13.4k | local_state.reset_estimate_memory_usage(); | 1059 | 13.4k | } |
_ZN5doris9OperatorXINS_19SpillSortLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 217 | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 217 | auto& local_state = get_local_state(state); | 1058 | 217 | local_state.reset_estimate_memory_usage(); | 1059 | 217 | } |
_ZN5doris9OperatorXINS_24LocalMergeSortLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 335k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 335k | auto& local_state = get_local_state(state); | 1058 | 335k | local_state.reset_estimate_memory_usage(); | 1059 | 335k | } |
_ZN5doris9OperatorXINS_18AnalyticLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 13.4k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 13.4k | auto& local_state = get_local_state(state); | 1058 | 13.4k | local_state.reset_estimate_memory_usage(); | 1059 | 13.4k | } |
_ZN5doris9OperatorXINS_16RepeatLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 3.85k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 3.85k | auto& local_state = get_local_state(state); | 1058 | 3.85k | local_state.reset_estimate_memory_usage(); | 1059 | 3.85k | } |
_ZN5doris9OperatorXINS_23TableFunctionLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 6.54k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 6.54k | auto& local_state = get_local_state(state); | 1058 | 6.54k | local_state.reset_estimate_memory_usage(); | 1059 | 6.54k | } |
_ZN5doris9OperatorXINS_23AssertNumRowsLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 428 | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 428 | auto& local_state = get_local_state(state); | 1058 | 428 | local_state.reset_estimate_memory_usage(); | 1059 | 428 | } |
_ZN5doris9OperatorXINS_17DataGenLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 15.4k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 15.4k | auto& local_state = get_local_state(state); | 1058 | 15.4k | local_state.reset_estimate_memory_usage(); | 1059 | 15.4k | } |
_ZN5doris9OperatorXINS_20SchemaScanLocalStateEE22reset_reserve_mem_sizeEPNS_12RuntimeStateE Line | Count | Source | 1056 | 3.75k | void reset_reserve_mem_size(RuntimeState* state) override { | 1057 | 3.75k | auto& local_state = get_local_state(state); | 1058 | 3.75k | local_state.reset_estimate_memory_usage(); | 1059 | 3.75k | } |
|
1060 | | }; |
1061 | | |
1062 | | /** |
1063 | | * StreamingOperatorX indicates operators which always processes block in streaming way (one-in-one-out). |
1064 | | */ |
1065 | | template <typename LocalStateType> |
1066 | | class StreamingOperatorX : public OperatorX<LocalStateType> { |
1067 | | public: |
1068 | | StreamingOperatorX(ObjectPool* pool, const TPlanNode& tnode, int operator_id, |
1069 | | const DescriptorTbl& descs) |
1070 | 2.78k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {}_ZN5doris18StreamingOperatorXINS_16SelectLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1070 | 2.56k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris18StreamingOperatorXINS_23AssertNumRowsLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1070 | 218 | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
|
1071 | | |
1072 | | #ifdef BE_TEST |
1073 | | StreamingOperatorX() = default; |
1074 | | #endif |
1075 | | |
1076 | | virtual ~StreamingOperatorX() = default; |
1077 | | |
1078 | | Status get_block_impl(RuntimeState* state, Block* block, bool* eos) override; |
1079 | | |
1080 | | virtual Status pull(RuntimeState* state, Block* block, bool* eos) = 0; |
1081 | | }; |
1082 | | |
1083 | | /** |
1084 | | * StatefulOperatorX indicates the operators with some states inside. |
1085 | | * |
1086 | | * Specifically, we called an operator stateful if an operator can determine its output by itself. |
1087 | | * For example, hash join probe operator is a typical StatefulOperator. When it gets a block from probe side, it will hold this block inside (e.g. _child_block). |
1088 | | * If there are still remain rows in probe block, we can get output block by calling `get_block` without any data from its child. |
1089 | | * In a nutshell, it is a one-to-many relation between input blocks and output blocks for StatefulOperator. |
1090 | | */ |
1091 | | template <typename LocalStateType> |
1092 | | class StatefulOperatorX : public OperatorX<LocalStateType> { |
1093 | | public: |
1094 | | StatefulOperatorX(ObjectPool* pool, const TPlanNode& tnode, const int operator_id, |
1095 | | const DescriptorTbl& descs) |
1096 | 182k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {}_ZN5doris17StatefulOperatorXINS_25MaterializationLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 1.64k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_23HashJoinProbeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 82.4k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_34PartitionedHashJoinProbeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 52 | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_16RepeatLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 327 | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_22StreamingAggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 1.98k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_30DistinctStreamingAggLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 88.5k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_29NestedLoopJoinProbeLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 6.17k | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
_ZN5doris17StatefulOperatorXINS_23TableFunctionLocalStateEEC2EPNS_10ObjectPoolERKNS_9TPlanNodeEiRKNS_13DescriptorTblE Line | Count | Source | 1096 | 925 | : OperatorX<LocalStateType>(pool, tnode, operator_id, descs) {} |
|
1097 | | #ifdef BE_TEST |
1098 | | StatefulOperatorX() = default; |
1099 | | #endif |
1100 | | virtual ~StatefulOperatorX() = default; |
1101 | | |
1102 | | using OperatorX<LocalStateType>::get_local_state; |
1103 | | |
1104 | | [[nodiscard]] Status get_block_impl(RuntimeState* state, Block* block, bool* eos) override; |
1105 | | |
1106 | | [[nodiscard]] virtual Status pull(RuntimeState* state, Block* block, bool* eos) const = 0; |
1107 | | [[nodiscard]] virtual Status push(RuntimeState* state, Block* input_block, bool eos) const = 0; |
1108 | 0 | bool need_more_input_data(RuntimeState* state) const override { return true; }Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_23HashJoinProbeLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_34PartitionedHashJoinProbeLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_29NestedLoopJoinProbeLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_25MaterializationLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_30DistinctStreamingAggLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_22StreamingAggLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_16RepeatLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE Unexecuted instantiation: _ZNK5doris17StatefulOperatorXINS_23TableFunctionLocalStateEE20need_more_input_dataEPNS_12RuntimeStateE |
1109 | | }; |
1110 | | |
1111 | | template <typename Writer, typename Parent> |
1112 | | requires(std::is_base_of_v<AsyncResultWriter, Writer>) |
1113 | | class AsyncWriterSink : public PipelineXSinkLocalState<BasicSharedState> { |
1114 | | public: |
1115 | | using Base = PipelineXSinkLocalState<BasicSharedState>; |
1116 | | AsyncWriterSink(DataSinkOperatorXBase* parent, RuntimeState* state) |
1117 | 65.4k | : Base(parent, state), _async_writer_dependency(nullptr) { |
1118 | 65.4k | _finish_dependency = |
1119 | 65.4k | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), |
1120 | 65.4k | parent->get_name() + "_FINISH_DEPENDENCY", true); |
1121 | 65.4k | } _ZN5doris15AsyncWriterSinkINS_17VFileResultWriterENS_23ResultFileSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 516 | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 516 | _finish_dependency = | 1119 | 516 | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 516 | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 516 | } |
_ZN5doris15AsyncWriterSinkINS_16VJdbcTableWriterENS_22JdbcTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 88 | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 88 | _finish_dependency = | 1119 | 88 | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 88 | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 88 | } |
_ZN5doris15AsyncWriterSinkINS_13VTabletWriterENS_22OlapTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 45.9k | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 45.9k | _finish_dependency = | 1119 | 45.9k | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 45.9k | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 45.9k | } |
_ZN5doris15AsyncWriterSinkINS_15VTabletWriterV2ENS_24OlapTableSinkV2OperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 9.33k | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 9.33k | _finish_dependency = | 1119 | 9.33k | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 9.33k | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 9.33k | } |
_ZN5doris15AsyncWriterSinkINS_16VHiveTableWriterENS_22HiveTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 5.16k | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 5.16k | _finish_dependency = | 1119 | 5.16k | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 5.16k | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 5.16k | } |
_ZN5doris15AsyncWriterSinkINS_19VIcebergTableWriterENS_25IcebergTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 3.38k | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 3.38k | _finish_dependency = | 1119 | 3.38k | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 3.38k | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 3.38k | } |
_ZN5doris15AsyncWriterSinkINS_19VIcebergTableWriterENS_30SpillIcebergTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 32 | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 32 | _finish_dependency = | 1119 | 32 | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 32 | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 32 | } |
_ZN5doris15AsyncWriterSinkINS_18VIcebergDeleteSinkENS_26IcebergDeleteSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 160 | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 160 | _finish_dependency = | 1119 | 160 | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 160 | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 160 | } |
_ZN5doris15AsyncWriterSinkINS_17VIcebergMergeSinkENS_25IcebergMergeSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 640 | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 640 | _finish_dependency = | 1119 | 640 | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 640 | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 640 | } |
Unexecuted instantiation: _ZN5doris15AsyncWriterSinkINS_14VMCTableWriterENS_20MCTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE _ZN5doris15AsyncWriterSinkINS_15VTVFTableWriterENS_21TVFTableSinkOperatorXEEC2EPNS_21DataSinkOperatorXBaseEPNS_12RuntimeStateE Line | Count | Source | 1117 | 156 | : Base(parent, state), _async_writer_dependency(nullptr) { | 1118 | 156 | _finish_dependency = | 1119 | 156 | std::make_shared<Dependency>(parent->operator_id(), parent->node_id(), | 1120 | 156 | parent->get_name() + "_FINISH_DEPENDENCY", true); | 1121 | 156 | } |
|
1122 | | |
1123 | | Status init(RuntimeState* state, LocalSinkStateInfo& info) override; |
1124 | | |
1125 | | Status open(RuntimeState* state) override; |
1126 | | |
1127 | | Status sink(RuntimeState* state, Block* block, bool eos); |
1128 | | |
1129 | 65.6k | std::vector<Dependency*> dependencies() const override { |
1130 | 65.6k | return {_async_writer_dependency.get()}; |
1131 | 65.6k | } _ZNK5doris15AsyncWriterSinkINS_15VTabletWriterV2ENS_24OlapTableSinkV2OperatorXEE12dependenciesEv Line | Count | Source | 1129 | 9.32k | std::vector<Dependency*> dependencies() const override { | 1130 | 9.32k | return {_async_writer_dependency.get()}; | 1131 | 9.32k | } |
_ZNK5doris15AsyncWriterSinkINS_13VTabletWriterENS_22OlapTableSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 46.1k | std::vector<Dependency*> dependencies() const override { | 1130 | 46.1k | return {_async_writer_dependency.get()}; | 1131 | 46.1k | } |
_ZNK5doris15AsyncWriterSinkINS_16VHiveTableWriterENS_22HiveTableSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 5.16k | std::vector<Dependency*> dependencies() const override { | 1130 | 5.16k | return {_async_writer_dependency.get()}; | 1131 | 5.16k | } |
_ZNK5doris15AsyncWriterSinkINS_18VIcebergDeleteSinkENS_26IcebergDeleteSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 160 | std::vector<Dependency*> dependencies() const override { | 1130 | 160 | return {_async_writer_dependency.get()}; | 1131 | 160 | } |
_ZNK5doris15AsyncWriterSinkINS_17VIcebergMergeSinkENS_25IcebergMergeSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 640 | std::vector<Dependency*> dependencies() const override { | 1130 | 640 | return {_async_writer_dependency.get()}; | 1131 | 640 | } |
_ZNK5doris15AsyncWriterSinkINS_19VIcebergTableWriterENS_25IcebergTableSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 3.38k | std::vector<Dependency*> dependencies() const override { | 1130 | 3.38k | return {_async_writer_dependency.get()}; | 1131 | 3.38k | } |
_ZNK5doris15AsyncWriterSinkINS_16VJdbcTableWriterENS_22JdbcTableSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 88 | std::vector<Dependency*> dependencies() const override { | 1130 | 88 | return {_async_writer_dependency.get()}; | 1131 | 88 | } |
Unexecuted instantiation: _ZNK5doris15AsyncWriterSinkINS_14VMCTableWriterENS_20MCTableSinkOperatorXEE12dependenciesEv _ZNK5doris15AsyncWriterSinkINS_15VTVFTableWriterENS_21TVFTableSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 156 | std::vector<Dependency*> dependencies() const override { | 1130 | 156 | return {_async_writer_dependency.get()}; | 1131 | 156 | } |
_ZNK5doris15AsyncWriterSinkINS_17VFileResultWriterENS_23ResultFileSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 517 | std::vector<Dependency*> dependencies() const override { | 1130 | 517 | return {_async_writer_dependency.get()}; | 1131 | 517 | } |
_ZNK5doris15AsyncWriterSinkINS_19VIcebergTableWriterENS_30SpillIcebergTableSinkOperatorXEE12dependenciesEv Line | Count | Source | 1129 | 32 | std::vector<Dependency*> dependencies() const override { | 1130 | 32 | return {_async_writer_dependency.get()}; | 1131 | 32 | } |
|
1132 | | Status close(RuntimeState* state, Status exec_status) override; |
1133 | | |
1134 | 65.6k | Dependency* finishdependency() override { return _finish_dependency.get(); }_ZN5doris15AsyncWriterSinkINS_15VTabletWriterV2ENS_24OlapTableSinkV2OperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 9.32k | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_13VTabletWriterENS_22OlapTableSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 46.1k | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_16VHiveTableWriterENS_22HiveTableSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 5.16k | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_18VIcebergDeleteSinkENS_26IcebergDeleteSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 160 | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_17VIcebergMergeSinkENS_25IcebergMergeSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 640 | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_19VIcebergTableWriterENS_25IcebergTableSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 3.38k | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_16VJdbcTableWriterENS_22JdbcTableSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 88 | Dependency* finishdependency() override { return _finish_dependency.get(); } |
Unexecuted instantiation: _ZN5doris15AsyncWriterSinkINS_14VMCTableWriterENS_20MCTableSinkOperatorXEE16finishdependencyEv _ZN5doris15AsyncWriterSinkINS_15VTVFTableWriterENS_21TVFTableSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 156 | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_17VFileResultWriterENS_23ResultFileSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 517 | Dependency* finishdependency() override { return _finish_dependency.get(); } |
_ZN5doris15AsyncWriterSinkINS_19VIcebergTableWriterENS_30SpillIcebergTableSinkOperatorXEE16finishdependencyEv Line | Count | Source | 1134 | 32 | Dependency* finishdependency() override { return _finish_dependency.get(); } |
|
1135 | | |
1136 | | protected: |
1137 | | VExprContextSPtrs _output_vexpr_ctxs; |
1138 | | std::unique_ptr<Writer> _writer; |
1139 | | |
1140 | | std::shared_ptr<Dependency> _async_writer_dependency; |
1141 | | std::shared_ptr<Dependency> _finish_dependency; |
1142 | | }; |
1143 | | |
1144 | | #ifdef BE_TEST |
1145 | | class DummyOperatorLocalState final : public PipelineXLocalState<FakeSharedState> { |
1146 | | public: |
1147 | | ENABLE_FACTORY_CREATOR(DummyOperatorLocalState); |
1148 | | |
1149 | | DummyOperatorLocalState(RuntimeState* state, OperatorXBase* parent) |
1150 | | : PipelineXLocalState<FakeSharedState>(state, parent) { |
1151 | | _tmp_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(), |
1152 | | "DummyOperatorDependency", true); |
1153 | | _finish_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(), |
1154 | | "DummyOperatorDependency", true); |
1155 | | _filter_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(), |
1156 | | "DummyOperatorDependency", true); |
1157 | | } |
1158 | | Dependency* finishdependency() override { return _finish_dependency.get(); } |
1159 | | ~DummyOperatorLocalState() = default; |
1160 | | |
1161 | | std::vector<Dependency*> dependencies() const override { return {_tmp_dependency.get()}; } |
1162 | | std::vector<Dependency*> execution_dependencies() override { |
1163 | | return {_filter_dependency.get()}; |
1164 | | } |
1165 | | |
1166 | | private: |
1167 | | std::shared_ptr<Dependency> _tmp_dependency; |
1168 | | std::shared_ptr<Dependency> _finish_dependency; |
1169 | | std::shared_ptr<Dependency> _filter_dependency; |
1170 | | }; |
1171 | | |
1172 | | class DummyOperator final : public OperatorX<DummyOperatorLocalState> { |
1173 | | public: |
1174 | | DummyOperator() : OperatorX<DummyOperatorLocalState>(nullptr, 0, 0) {} |
1175 | | |
1176 | | [[nodiscard]] bool is_source() const override { return true; } |
1177 | | |
1178 | | Status get_block_impl(RuntimeState* state, Block* block, bool* eos) override { |
1179 | | *eos = _eos; |
1180 | | return Status::OK(); |
1181 | | } |
1182 | | void set_low_memory_mode(RuntimeState* state) override { _low_memory_mode = true; } |
1183 | | Status terminate(RuntimeState* state) override { |
1184 | | _terminated = true; |
1185 | | return Status::OK(); |
1186 | | } |
1187 | | size_t revocable_mem_size(RuntimeState* state) const override { return _revocable_mem_size; } |
1188 | | size_t get_reserve_mem_size(RuntimeState* state) override { |
1189 | | return _disable_reserve_mem |
1190 | | ? 0 |
1191 | | : OperatorX<DummyOperatorLocalState>::get_reserve_mem_size(state); |
1192 | | } |
1193 | | Status revoke_memory(RuntimeState* state) override { |
1194 | | _revoke_called = true; |
1195 | | return Status::OK(); |
1196 | | } |
1197 | | |
1198 | | private: |
1199 | | friend class AssertNumRowsLocalState; |
1200 | | bool _eos = false; |
1201 | | bool _low_memory_mode = false; |
1202 | | bool _terminated = false; |
1203 | | size_t _revocable_mem_size = 0; |
1204 | | bool _disable_reserve_mem = false; |
1205 | | bool _revoke_called = false; |
1206 | | }; |
1207 | | |
1208 | | class DummySinkLocalState final : public PipelineXSinkLocalState<BasicSharedState> { |
1209 | | public: |
1210 | | using Base = PipelineXSinkLocalState<BasicSharedState>; |
1211 | | ENABLE_FACTORY_CREATOR(DummySinkLocalState); |
1212 | | DummySinkLocalState(DataSinkOperatorXBase* parent, RuntimeState* state) : Base(parent, state) { |
1213 | | _tmp_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(), |
1214 | | "DummyOperatorDependency", true); |
1215 | | _finish_dependency = Dependency::create_shared(_parent->operator_id(), _parent->node_id(), |
1216 | | "DummyOperatorDependency", true); |
1217 | | } |
1218 | | |
1219 | | std::vector<Dependency*> dependencies() const override { return {_tmp_dependency.get()}; } |
1220 | | Dependency* finishdependency() override { return _finish_dependency.get(); } |
1221 | | bool is_finished() const override { return _is_finished; } |
1222 | | |
1223 | | private: |
1224 | | std::shared_ptr<Dependency> _tmp_dependency; |
1225 | | std::shared_ptr<Dependency> _finish_dependency; |
1226 | | std::atomic_bool _is_finished = false; |
1227 | | }; |
1228 | | |
1229 | | class DummySinkOperatorX final : public DataSinkOperatorX<DummySinkLocalState> { |
1230 | | public: |
1231 | | DummySinkOperatorX(int op_id, int node_id, int dest_id) |
1232 | | : DataSinkOperatorX<DummySinkLocalState>(op_id, node_id, dest_id) {} |
1233 | | Status sink_impl(RuntimeState* state, Block* in_block, bool eos) override { |
1234 | | return _return_eof ? Status::Error<ErrorCode::END_OF_FILE>("source have closed") |
1235 | | : Status::OK(); |
1236 | | } |
1237 | | void set_low_memory_mode(RuntimeState* state) override { _low_memory_mode = true; } |
1238 | | Status terminate(RuntimeState* state) override { |
1239 | | _terminated = true; |
1240 | | return Status::OK(); |
1241 | | } |
1242 | | size_t revocable_mem_size(RuntimeState* state) const override { return _revocable_mem_size; } |
1243 | | size_t get_reserve_mem_size(RuntimeState* state, bool eos) override { |
1244 | | return _disable_reserve_mem |
1245 | | ? 0 |
1246 | | : DataSinkOperatorX<DummySinkLocalState>::get_reserve_mem_size(state, eos); |
1247 | | } |
1248 | | Status revoke_memory(RuntimeState* state) override { |
1249 | | _revoke_called = true; |
1250 | | return Status::OK(); |
1251 | | } |
1252 | | |
1253 | | private: |
1254 | | bool _low_memory_mode = false; |
1255 | | bool _terminated = false; |
1256 | | std::atomic_bool _return_eof = false; |
1257 | | size_t _revocable_mem_size = 0; |
1258 | | bool _disable_reserve_mem = false; |
1259 | | bool _revoke_called = false; |
1260 | | }; |
1261 | | #endif |
1262 | | |
1263 | | } // namespace doris |