| 119 | } |
| 120 | |
| 121 | Result<SubstraitCall> DecodeScalarFunction( |
| 122 | Id id, const substrait::Expression::ScalarFunction& scalar_fn, |
| 123 | const ExtensionSet& ext_set, const ConversionOptions& conversion_options) { |
| 124 | ARROW_ASSIGN_OR_RAISE(auto output_type_and_nullable, |
| 125 | FromProto(scalar_fn.output_type(), ext_set, conversion_options)); |
| 126 | SubstraitCall call(id, output_type_and_nullable.first, output_type_and_nullable.second); |
| 127 | for (int i = 0; i < scalar_fn.arguments_size(); i++) { |
| 128 | ARROW_RETURN_NOT_OK( |
| 129 | DecodeArg(scalar_fn.arguments(i), i, &call, ext_set, conversion_options)); |
| 130 | } |
| 131 | for (const auto& opt : scalar_fn.options()) { |
| 132 | ARROW_RETURN_NOT_OK(DecodeOption(opt, &call)); |
| 133 | } |
| 134 | return call; |
| 135 | } |
| 136 | |
| 137 | Result<compute::Expression> FromProto(const substrait::Expression::ReferenceSegment* ref, |
| 138 | const ExtensionSet& ext_set, |
nothing calls this directly
no test coverage detected