We always send inputs to UDFs as arrays, because that's what the FFI is defined over. For scalar arguments (like literals) we convert it to an array with the same length as the non-scalar arguments. However, if there is only a scalar argument we don't know how long the array is supposed to be so we create a single element array. But this causes a runtime failure when trying to use the result of the UDF in the query.
The fix is to keep track of whether the original arguments were all scalars, and if so return a scalar result back instead of an array.
We always send inputs to UDFs as arrays, because that's what the FFI is defined over. For scalar arguments (like literals) we convert it to an array with the same length as the non-scalar arguments. However, if there is only a scalar argument we don't know how long the array is supposed to be so we create a single element array. But this causes a runtime failure when trying to use the result of the UDF in the query.
The fix is to keep track of whether the original arguments were all scalars, and if so return a scalar result back instead of an array.
Fixes #699