Expose scalar UDF arguments and a custom bind-callback #550
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
DuckDB
v1.4
exposes parts of the scalar function binding interface, including a lightweight API around expressions.With that, we can make it possible for clients implementing their custom scalar UDFs to also provide a custom bind callback. Binding happens before scalar function execution, meaning any computation based on the input arguments that only has to happen once, should happen during that bind step. Then, the result of that bind step can be made available to the different threads running the "actual" scalar function callback during execution.
In this PR, I've drafted an initial interface to make that possible. There are still a few open questions, like:
ScalarUDFArg
) be set in the context, or should we add (yet) another row executor taking that argument as its input? Or, should we add another row executor, but hand it some info-struct, to allow more expansion in the future. I think we want to discuss the options here, as this is also relevant for a long-term stable interface.ScalarUDFArg
?