matko commented on code in PR #1000: URL: https://github.com/apache/datafusion-python/pull/1000#discussion_r1932009641
########## src/pyarrow_util.rs: ########## Review Comment: it would be good to have the conversion functions in this file also available directly on a `ScalarValue`, which is how it was provided by the pyarrow feature. This to prevent having to clone `ScalarValue`s, just to wrap them in a `PyScalarValue` to get access to these functions. I understand we can't implement traits like `ToPyArrow` directly on `ScalarValue` as it is not in this crate, but we can leave it as an ordinary utility function. ```rust pub fn scalar_to_pyarrow(scalar: &ScalarValue) -> PyResult<PyObject> { ... } ``` Then call it from `ToPyArrow` as a common code path. ########## src/expr.rs: ########## @@ -356,7 +355,7 @@ impl PyExpr { /// Extracts the Expr value into a PyObject that can be shared with Python pub fn python_value(&self, py: Python) -> PyResult<PyObject> { match &self.expr { - Expr::Literal(scalar_value) => Ok(scalar_value.to_pyarrow(py)?), + Expr::Literal(scalar_value) => Ok(PyScalarValue(scalar_value.clone()).to_pyarrow(py)?), Review Comment: This is now a double clone, as `to_pyarrow()` is also cloning eventually. I see that this previously called into the pyarrow feature-enabled code, and this now got replaced by a version that works on `PyScalarValue` instead. However, we could still have a version of this code that works directly on `ScalarValue`. See notes below at pyarrow_util.rs. -- 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