tustvold commented on code in PR #3238:
URL: https://github.com/apache/arrow-rs/pull/3238#discussion_r1038427806


##########
arrow-cast/src/cast.rs:
##########
@@ -693,6 +784,36 @@ pub fn cast_with_options(
                 Float64 => {
                     cast_decimal_to_float!(array, scale, Float64Builder, f64)
                 }
+                Dictionary(index_type, value_type) => match **index_type {

Review Comment:
   These appear to duplicate a block lower down in the match tree
   
   ```
           (Dictionary(index_type, _), _) => match **index_type {
               Int8 => dictionary_cast::<Int8Type>(array, to_type, 
cast_options),
               Int16 => dictionary_cast::<Int16Type>(array, to_type, 
cast_options),
               Int32 => dictionary_cast::<Int32Type>(array, to_type, 
cast_options),
               Int64 => dictionary_cast::<Int64Type>(array, to_type, 
cast_options),
               UInt8 => dictionary_cast::<UInt8Type>(array, to_type, 
cast_options),
               UInt16 => dictionary_cast::<UInt16Type>(array, to_type, 
cast_options),
               UInt32 => dictionary_cast::<UInt32Type>(array, to_type, 
cast_options),
               UInt64 => dictionary_cast::<UInt64Type>(array, to_type, 
cast_options),
               _ => Err(ArrowError::CastError(format!(
                   "Casting from dictionary type {:?} to {:?} not supported",
                   from_type, to_type,
               ))),
           },
           (_, Dictionary(index_type, value_type)) => match **index_type {
               Int8 => cast_to_dictionary::<Int8Type>(array, value_type, 
cast_options),
               Int16 => cast_to_dictionary::<Int16Type>(array, value_type, 
cast_options),
               Int32 => cast_to_dictionary::<Int32Type>(array, value_type, 
cast_options),
               Int64 => cast_to_dictionary::<Int64Type>(array, value_type, 
cast_options),
               UInt8 => cast_to_dictionary::<UInt8Type>(array, value_type, 
cast_options),
               UInt16 => cast_to_dictionary::<UInt16Type>(array, value_type, 
cast_options),
               UInt32 => cast_to_dictionary::<UInt32Type>(array, value_type, 
cast_options),
               UInt64 => cast_to_dictionary::<UInt64Type>(array, value_type, 
cast_options),
               _ => Err(ArrowError::CastError(format!(
                   "Casting from type {:?} to dictionary type {:?} not 
supported",
                   from_type, to_type,
               ))),
           },
   ```
   
   Perhaps we could just move the decimal matches lower?
   
   Edit: In fact moving the dictionary matches to the top would also simplify 
the list handling as well, what do you think?



-- 
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]

Reply via email to