@@ -21,6 +21,7 @@ use crate::{EvalMode, SparkError, SparkResult};
21
21
use arrow:: array:: builder:: StringBuilder ;
22
22
use arrow:: array:: { DictionaryArray , ListArray , StringArray , StructArray } ;
23
23
use arrow:: compute:: can_cast_types;
24
+ use arrow:: datatypes:: DataType :: Utf8 ;
24
25
use arrow:: datatypes:: { ArrowDictionaryKeyType , ArrowNativeType , DataType , Schema } ;
25
26
use arrow:: {
26
27
array:: {
@@ -59,7 +60,6 @@ use std::{
59
60
num:: Wrapping ,
60
61
sync:: Arc ,
61
62
} ;
62
- use arrow:: datatypes:: DataType :: Utf8 ;
63
63
64
64
static TIMESTAMP_FORMAT : Option < & str > = Some ( "%Y-%m-%d %H:%M:%S%.f" ) ;
65
65
@@ -1180,8 +1180,9 @@ fn cast_array_to_string(
1180
1180
} else {
1181
1181
str. clear ( ) ;
1182
1182
let value_ref = array. value ( row_index) ;
1183
- let native_cast_result= cast_array ( value_ref, & Utf8 , & spark_cast_options) . unwrap ( ) ;
1184
- let string_array = native_cast_result. as_any ( )
1183
+ let native_cast_result = cast_array ( value_ref, & Utf8 , & spark_cast_options) . unwrap ( ) ;
1184
+ let string_array = native_cast_result
1185
+ . as_any ( )
1185
1186
. downcast_ref :: < StringArray > ( )
1186
1187
. unwrap ( ) ;
1187
1188
let mut any_fields_written = false ;
@@ -1196,7 +1197,6 @@ fn cast_array_to_string(
1196
1197
str. push_str ( "]" ) ;
1197
1198
builder. append_value ( & str) ;
1198
1199
}
1199
-
1200
1200
}
1201
1201
Ok ( Arc :: new ( builder. finish ( ) ) )
1202
1202
}
@@ -2790,24 +2790,22 @@ mod tests {
2790
2790
2791
2791
#[ test]
2792
2792
fn test_cast_string_array_to_string ( ) {
2793
- use arrow:: buffer:: OffsetBuffer ;
2794
2793
use arrow:: array:: ListArray ;
2795
- let values_array = StringArray :: from ( vec ! [
2796
- Some ( "a" ) , Some ( "b" ) , Some ( "c" ) ,
2797
- Some ( "a" ) , None ,
2798
- None
2799
- ] ) ;
2794
+ use arrow:: buffer:: OffsetBuffer ;
2795
+ let values_array =
2796
+ StringArray :: from ( vec ! [ Some ( "a" ) , Some ( "b" ) , Some ( "c" ) , Some ( "a" ) , None , None ] ) ;
2800
2797
let offsets_buffer = OffsetBuffer :: < i32 > :: new ( vec ! [ 0 , 3 , 5 , 6 , 6 ] . into ( ) ) ;
2801
2798
let item_field = Arc :: new ( Field :: new ( "item" , DataType :: Utf8 , true ) ) ;
2802
2799
let list_array = Arc :: new ( ListArray :: new (
2803
2800
item_field,
2804
2801
offsets_buffer,
2805
2802
Arc :: new ( values_array) ,
2806
- None
2803
+ None ,
2807
2804
) ) ;
2808
2805
let string_array = cast_array_to_string (
2809
2806
& list_array,
2810
- & SparkCastOptions :: new ( EvalMode :: Legacy , "UTC" , false ) )
2807
+ & SparkCastOptions :: new ( EvalMode :: Legacy , "UTC" , false ) ,
2808
+ )
2811
2809
. unwrap ( ) ;
2812
2810
let string_array = string_array. as_string :: < i32 > ( ) ;
2813
2811
assert_eq ! ( r#"[a, b, c]"# , string_array. value( 0 ) ) ;
@@ -2818,30 +2816,26 @@ mod tests {
2818
2816
2819
2817
#[ test]
2820
2818
fn test_cast_i32_array_to_string ( ) {
2821
- use arrow:: buffer:: OffsetBuffer ;
2822
2819
use arrow:: array:: ListArray ;
2823
- let values_array = Int32Array :: from ( vec ! [
2824
- Some ( 1 ) , Some ( 2 ) , Some ( 3 ) ,
2825
- Some ( 1 ) , None ,
2826
- None
2827
- ] ) ;
2820
+ use arrow:: buffer:: OffsetBuffer ;
2821
+ let values_array = Int32Array :: from ( vec ! [ Some ( 1 ) , Some ( 2 ) , Some ( 3 ) , Some ( 1 ) , None , None ] ) ;
2828
2822
let offsets_buffer = OffsetBuffer :: < i32 > :: new ( vec ! [ 0 , 3 , 5 , 6 , 6 ] . into ( ) ) ;
2829
2823
let item_field = Arc :: new ( Field :: new ( "item" , DataType :: Int32 , true ) ) ;
2830
2824
let list_array = Arc :: new ( ListArray :: new (
2831
2825
item_field,
2832
2826
offsets_buffer,
2833
2827
Arc :: new ( values_array) ,
2834
- None
2828
+ None ,
2835
2829
) ) ;
2836
2830
let string_array = cast_array_to_string (
2837
2831
& list_array,
2838
- & SparkCastOptions :: new ( EvalMode :: Legacy , "UTC" , false ) )
2839
- . unwrap ( ) ;
2832
+ & SparkCastOptions :: new ( EvalMode :: Legacy , "UTC" , false ) ,
2833
+ )
2834
+ . unwrap ( ) ;
2840
2835
let string_array = string_array. as_string :: < i32 > ( ) ;
2841
2836
assert_eq ! ( r#"[1, 2, 3]"# , string_array. value( 0 ) ) ;
2842
2837
assert_eq ! ( r#"[1, NULL]"# , string_array. value( 1 ) ) ;
2843
2838
assert_eq ! ( r#"[NULL]"# , string_array. value( 2 ) ) ;
2844
2839
assert_eq ! ( r#"[]"# , string_array. value( 3 ) ) ;
2845
2840
}
2846
-
2847
2841
}
0 commit comments