MCPcopy Create free account
hub / github.com/apache/impala / LookupSeparateJoinBuilder

Method LookupSeparateJoinBuilder

be/src/exec/blocking-join-node.cc:184–207  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

182}
183
184Status BlockingJoinNode::LookupSeparateJoinBuilder(RuntimeState* state,
185 JoinBuilder** separate_builder) {
186 // This can only be called when there is a separate join build
187 DCHECK(UseSeparateBuild(state->query_options()));
188
189 // Find the input fragment's build sink. GetFInstanceState() waits for the Prepare()
190 // phase to complete for all the fragments on this executor, so it is unsuitable to
191 // call during Prepare() itself. Typically, this is used during the Open() phase.
192 const google::protobuf::RepeatedPtrField<JoinBuildInputPB>& build_inputs =
193 state->instance_ctx_pb().join_build_inputs();
194 auto it = std::find_if(build_inputs.begin(), build_inputs.end(),
195 [this](const JoinBuildInputPB& bi) { return bi.join_node_id() == id_; });
196 DCHECK(it != build_inputs.end());
197 FragmentInstanceState* build_finstance;
198 TUniqueId input_finstance_id;
199 UniqueIdPBToTUniqueId(it->input_finstance_id(), &input_finstance_id);
200 RETURN_IF_ERROR(
201 state->query_state()->GetFInstanceState(input_finstance_id, &build_finstance));
202 TDataSinkType::type build_sink_type = build_finstance->fragment().output_sink.type;
203 DCHECK(IsJoinBuildSink(build_sink_type));
204 *separate_builder = build_finstance->GetJoinBuildSink();
205 DCHECK(*separate_builder != nullptr);
206 return Status::OK();
207}
208
209Status BlockingJoinNode::OpenImpl(RuntimeState* state, JoinBuilder** separate_builder) {
210 RETURN_IF_ERROR(ExecNode::Open(state));

Callers

nothing calls this directly

Calls 8

UniqueIdPBToTUniqueIdFunction · 0.85
IsJoinBuildSinkFunction · 0.85
OKFunction · 0.85
GetFInstanceStateMethod · 0.80
GetJoinBuildSinkMethod · 0.80
beginMethod · 0.45
endMethod · 0.45
query_stateMethod · 0.45

Tested by

no test coverage detected