@@ -3089,46 +3089,21 @@ impl TryFrom<&DataType> for ScalarValue {
3089
3089
Box :: new ( value_type. as_ref ( ) . try_into ( ) ?) ,
3090
3090
) ,
3091
3091
// `ScalaValue::List` contains single element `ListArray`.
3092
- DataType :: List ( field) => ScalarValue :: List (
3093
- new_null_array (
3094
- & DataType :: List ( Arc :: new ( Field :: new (
3095
- "item" ,
3096
- field. data_type ( ) . clone ( ) ,
3097
- true ,
3098
- ) ) ) ,
3099
- 1 ,
3100
- )
3101
- . as_list :: < i32 > ( )
3102
- . to_owned ( )
3103
- . into ( ) ,
3104
- ) ,
3105
- // 'ScalarValue::LargeList' contains single element `LargeListArray
3106
- DataType :: LargeList ( field) => ScalarValue :: LargeList (
3107
- new_null_array (
3108
- & DataType :: LargeList ( Arc :: new ( Field :: new (
3109
- "item" ,
3110
- field. data_type ( ) . clone ( ) ,
3111
- true ,
3112
- ) ) ) ,
3113
- 1 ,
3114
- )
3115
- . as_list :: < i64 > ( )
3116
- . to_owned ( )
3117
- . into ( ) ,
3118
- ) ,
3092
+ DataType :: List ( field_ref) => ScalarValue :: List ( Arc :: new (
3093
+ GenericListArray :: new_null ( field_ref. clone ( ) , 1 ) ,
3094
+ ) ) ,
3095
+ // `ScalarValue::LargeList` contains single element `LargeListArray`.
3096
+ DataType :: LargeList ( field_ref) => ScalarValue :: LargeList ( Arc :: new (
3097
+ GenericListArray :: new_null ( field_ref. clone ( ) , 1 ) ,
3098
+ ) ) ,
3119
3099
// `ScalaValue::FixedSizeList` contains single element `FixedSizeList`.
3120
- DataType :: FixedSizeList ( field, _) => ScalarValue :: FixedSizeList (
3121
- new_null_array (
3122
- & DataType :: FixedSizeList (
3123
- Arc :: new ( Field :: new ( "item" , field. data_type ( ) . clone ( ) , true ) ) ,
3124
- 1 ,
3125
- ) ,
3100
+ DataType :: FixedSizeList ( field_ref, fixed_length) => {
3101
+ ScalarValue :: FixedSizeList ( Arc :: new ( FixedSizeListArray :: new_null (
3102
+ field_ref. clone ( ) ,
3103
+ * fixed_length,
3126
3104
1 ,
3127
- )
3128
- . as_fixed_size_list ( )
3129
- . to_owned ( )
3130
- . into ( ) ,
3131
- ) ,
3105
+ ) ) )
3106
+ }
3132
3107
DataType :: Struct ( fields) => ScalarValue :: Struct (
3133
3108
new_null_array ( & DataType :: Struct ( fields. to_owned ( ) ) , 1 )
3134
3109
. as_struct ( )
@@ -4470,23 +4445,44 @@ mod tests {
4470
4445
}
4471
4446
4472
4447
#[ test]
4473
- fn scalar_try_from_list ( ) {
4474
- let data_type =
4475
- DataType :: List ( Arc :: new ( Field :: new ( "item" , DataType :: Int32 , true ) ) ) ;
4476
- let data_type = & data_type;
4477
- let scalar: ScalarValue = data_type. try_into ( ) . unwrap ( ) ;
4448
+ fn scalar_try_from_list_datatypes ( ) {
4449
+ let inner_field = Arc :: new ( Field :: new ( "item" , DataType :: Int32 , true ) ) ;
4478
4450
4451
+ // Test for List
4452
+ let data_type = & DataType :: List ( inner_field. clone ( ) ) ;
4453
+ let scalar: ScalarValue = data_type. try_into ( ) . unwrap ( ) ;
4479
4454
let expected = ScalarValue :: List (
4480
- new_null_array (
4481
- & DataType :: List ( Arc :: new ( Field :: new ( "item" , DataType :: Int32 , true ) ) ) ,
4482
- 1 ,
4483
- )
4484
- . as_list :: < i32 > ( )
4485
- . to_owned ( )
4486
- . into ( ) ,
4455
+ new_null_array ( data_type, 1 )
4456
+ . as_list :: < i32 > ( )
4457
+ . to_owned ( )
4458
+ . into ( ) ,
4487
4459
) ;
4460
+ assert_eq ! ( expected, scalar) ;
4461
+ assert ! ( expected. is_null( ) ) ;
4488
4462
4489
- assert_eq ! ( expected, scalar)
4463
+ // Test for LargeList
4464
+ let data_type = & DataType :: LargeList ( inner_field. clone ( ) ) ;
4465
+ let scalar: ScalarValue = data_type. try_into ( ) . unwrap ( ) ;
4466
+ let expected = ScalarValue :: LargeList (
4467
+ new_null_array ( data_type, 1 )
4468
+ . as_list :: < i64 > ( )
4469
+ . to_owned ( )
4470
+ . into ( ) ,
4471
+ ) ;
4472
+ assert_eq ! ( expected, scalar) ;
4473
+ assert ! ( expected. is_null( ) ) ;
4474
+
4475
+ // Test for FixedSizeList(5)
4476
+ let data_type = & DataType :: FixedSizeList ( inner_field. clone ( ) , 5 ) ;
4477
+ let scalar: ScalarValue = data_type. try_into ( ) . unwrap ( ) ;
4478
+ let expected = ScalarValue :: FixedSizeList (
4479
+ new_null_array ( data_type, 1 )
4480
+ . as_fixed_size_list ( )
4481
+ . to_owned ( )
4482
+ . into ( ) ,
4483
+ ) ;
4484
+ assert_eq ! ( expected, scalar) ;
4485
+ assert ! ( expected. is_null( ) ) ;
4490
4486
}
4491
4487
4492
4488
#[ test]
0 commit comments