MCPcopy Create free account
hub / github.com/apache/arrow / GetExtensionInfo

Function GetExtensionInfo

cpp/src/arrow/engine/substrait/relation_internal.cc:197–237  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

195}
196
197Result<DeclarationInfo> GetExtensionInfo(const substrait::Rel& rel,
198 const ExtensionSet& ext_set,
199 const ConversionOptions& conv_opts,
200 std::vector<DeclarationInfo>* inputs_arg) {
201 if (inputs_arg == nullptr) {
202 std::vector<DeclarationInfo> inputs_tmp;
203 return GetExtensionInfo(rel, ext_set, conv_opts, &inputs_tmp);
204 }
205 std::vector<DeclarationInfo>& inputs = *inputs_arg;
206 inputs.clear();
207 switch (rel.rel_type_case()) {
208 case substrait::Rel::RelTypeCase::kExtensionLeaf: {
209 const auto& ext = rel.extension_leaf();
210 DefaultExtensionDetails detail{ext.detail()};
211 return conv_opts.extension_provider->MakeRel(conv_opts, inputs, detail, ext_set);
212 }
213
214 case substrait::Rel::RelTypeCase::kExtensionSingle: {
215 const auto& ext = rel.extension_single();
216 ARROW_ASSIGN_OR_RAISE(DeclarationInfo input_info,
217 FromProto(ext.input(), ext_set, conv_opts));
218 inputs.push_back(std::move(input_info));
219 DefaultExtensionDetails detail{ext.detail()};
220 return conv_opts.extension_provider->MakeRel(conv_opts, inputs, detail, ext_set);
221 }
222
223 case substrait::Rel::RelTypeCase::kExtensionMulti: {
224 const auto& ext = rel.extension_multi();
225 for (const auto& input : ext.inputs()) {
226 ARROW_ASSIGN_OR_RAISE(auto input_info, FromProto(input, ext_set, conv_opts));
227 inputs.push_back(std::move(input_info));
228 }
229 DefaultExtensionDetails detail{ext.detail()};
230 return conv_opts.extension_provider->MakeRel(conv_opts, inputs, detail, ext_set);
231 }
232
233 default: {
234 return Status::Invalid("Invalid extension relation case ", rel.rel_type_case());
235 }
236 }
237}
238
239std::optional<substrait::RelCommon> GetExtensionRelCommon(const substrait::Rel& rel) {
240 switch (rel.rel_type_case()) {

Callers

nothing calls this directly

Calls 4

push_backMethod · 0.80
InvalidFunction · 0.50
clearMethod · 0.45
MakeRelMethod · 0.45

Tested by

no test coverage detected