eejbyfeldt commented on code in PR #12965:
URL: https://github.com/apache/datafusion/pull/12965#discussion_r1802941364


##########
datafusion/physical-expr/src/scalar_function.rs:
##########
@@ -147,8 +149,19 @@ impl PhysicalExpr for ScalarFunctionExpr {
 
         if let ColumnarValue::Array(array) = &output {
             if array.len() != batch.num_rows() {
-                return internal_err!("UDF returned a different number of rows 
than expected. Expected: {}, Got: {}",
-                        batch.num_rows(), array.len());
+                // If the function is not volatile and all arguments are 
scalars,
+                // we can assume that returning a one-element array is 
equivalent to returning a scalar.
+                let preserve_scalar = array.len() == 1
+                    && self.fun.signature().volatility != Volatility::Volatile

Review Comment:
   Why can we not do this for functions that are `Volatile`?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to