Add UDF (AKA scalar functions) support #966
Closed
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.
Here is a PoC adding support for Ruby UDFs (AKA known as scalar functions, referenced in the issue #751). It is highly inspired from the official C API example.
The API is inspired from the Python API
More basic examples are available in
test/duckdb_test/scalar_functions_test.rb.The code change is more a WIP than anything else, but if you are interested about it then I would be happy to make it production ready (and if you are OK with the general structure of the change). Feedback is more than welcome.
Remaining tasks:
nilEDIT: It seems there are some segfaults in the CI, I have tested it only on macOS so far. It seems to happen only when there is an exception raised in the UDF. It can be reproduced with a IRB terminal (with
./bin/console), with LLDB attached to it using the following script: