-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Description
Is your feature request related to a problem or challenge?
When implementing ScalarUDFImpl, AggregateUDFImpl, or WindowUDFImpl, it would be very cool to have the chance to return a custom Diagnostic either during the planning phase or the execution phase. Currently, you can return errors e.g. in ScalarUDFImpl::return_type_from_args or ScalarUDFImpl::invoke, but no Spans are available there so there's no way to construct a Diagnostic that highlights the call expression, or a specific argument of the function, for instance.
Describe the solution you'd like
Add a FnCallSpans types that bundles:
- The
Spanfor the whole call expression - The
Spanfor just the function identifier - A
Vec<Span>, one for each argument
Add a diagnose trait function (defaults to doing nothing) which is called during logical planning and is given the types of the arguments for a particular callsite, as well as an instance of FnCallSpans. The implementor can here construct a Diagnostic and return an errors that contains it. The logical planner would bubble up the error.
Also add a FnCallSpans field to ScalarFunctionArgs (and equivalently for aggregate and window functions) so the implementor, in ScalarUDFImpl::invoke_with_args, can create Diagnostics for a particular execution as well. This shouldn't be too big of a breaking change, unless users are using struct destruction syntax with ScalarFunctionArgs.
Describe alternatives you've considered
No response
Additional context
No response