-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Review the need of make_scalar_function
for functions
#14835
Comments
Ensuring #12635 can handle the basic math functions would be a good validation of the API in general |
it seems this issue is accidentally added in blog sub-issue |
Fixed -- sorry about that -- I am not sure how I did that but will be more careful |
i am not questioning it (i know very well how much more I'd like to do there), but I am curious about outsider's perspective. |
To replace the existing function without needing to maintain it, we must ensure that all its current functionality is fully supported. Among everything we have so far, extensibility seems to be the biggest challenge. The more extensible we make the function, the less simple it becomes. Since I haven't seen a viable solution for this in #14668, I believe it is still far from being ready. |
FWIW in my opinion, getting to the level of replacing |
Is your feature request related to a problem or challenge?
The current code converts scalars to arrays and then back after the function calculation. However, this conversion is unnecessary and can be optimized, especially in cases involving scalars. The conversion process duplicates values in the array, which doesn't add any value.
This approach was likely implemented when Scalar was not yet introduced in arrow-rs, but that’s no longer the case. With Scalar available, the conversion to arrays is redundant.
For example, the gcd function does not require an array and can instead operate directly on an i64 value #14834
Describe the solution you'd like
Revisit the functions that use
make_scalar_function
and identify those where it is no longer necessary. If there are functions that no longer require it, remove the usage entirely to streamline the code.Describe alternatives you've considered
No response
Additional context
No response
The text was updated successfully, but these errors were encountered: