Hi Arrow devs,

I'm currently adding support for casting arrays in Rust, and I'm wondering
what casting operations should be supported, and how. Most operations are
simple, but I have a few questions below.

* Struct to Struct: I am not supporting in Rust as it might not make
sense/be easy to support. Is that fine?

* List of type A to List of type B: does it make sense to support casting
as long as the underlying types can be cast to each other? I'm thinking of
casting a list of u32 to list of i32

* Boolean to Decimal: Apache Impala doesn't support this (
https://impala.apache.org/docs/build/html/topics/impala_boolean.html).Should
we follow suit here?

* Boolean to Utf8: Impala casts 'true' to '1', what are Arrow
implementations doing? I'll also have a look at the CPP codebase.

* Utf8 to Boolean: Impala disallows this, but a case could be made for
supporting this, with the cast operation being limited to (true/false),
(T/F) and what CSV readers infer to be true or false. This could be useful
when reading CSV files (in Rust)

* Primitive to List: I was thinking of creating a list with 1 value for the
primitive (provided the list type is compatible with the from primitive).
Is this too extreme? We could perhaps leave this out and support it someday
in array operations

With regards to temporal arrays, should casting date and time to primitive
types be supported? The inverse makes sense as I might have an Int32Array
with millisecond values that I want to cast to a Timestamp or a Date32.

If there's interest/benefit in documenting the above for future consistency
among the various languages, I don't mind documenting something in the
coming days/weeks.

Thanks and Regards

Neville

Reply via email to