retikulum commented on issue #3152:
URL:
https://github.com/apache/arrow-datafusion/issues/3152#issuecomment-1292505183
Hi. While this issue is getting old, I might help but have some questions. .
I will give `as_int32_array` as a generic example so you can think of those
questions for all other types.
- In which file we should implement `as_int32_array` function? I have
implemented it in `datafusion\common\src\lib.rs` but I am not quite sure about
the architecture.
- Before opening pr, I want to be sure that this sample is implemented
correctly. I added this function:
```rust
pub fn as_int32_array(array: &dyn Array) -> Result<&Int32Array> {
array.as_any().downcast_ref::<Int32Array>().ok_or(
DataFusionError::Execution(format!("Expected a Int32Array, got: {}",
array.data_type()),
))
}
```
And change this:
https://github.com/apache/arrow-datafusion/blob/10e64dc013ba210ab1f6c2a3c02c66aef4a0e802/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs#L851-L854
To this:
```rust
let arg0 = as_int32_array(&args[0])?;
```
Is this the correct way?
[`simplify_expressions::test_evaluator_udfs`](https://github.com/apache/arrow-datafusion/blob/10e64dc013ba210ab1f6c2a3c02c66aef4a0e802/datafusion/optimizer/src/simplify_expressions/expr_simplifier.rs#L976)
test runs successfully after implementation.
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]