@@ -464,62 +464,53 @@ pub fn coerced_type_with_base_type_only(
464464 base_type : & DataType ,
465465) -> DataType {
466466 match data_type {
467- DataType :: List ( field)
468- | DataType :: FixedSizeList ( field, _)
469- | DataType :: LargeList ( field) => {
470- let field_type = match field. data_type ( ) {
471- // nested type could be different list type
472- DataType :: List ( _)
473- | DataType :: FixedSizeList ( _, _)
474- | DataType :: LargeList ( _) => {
475- coerced_type_with_base_type_only ( field. data_type ( ) , base_type)
476- }
477- _ => base_type. to_owned ( ) ,
478- } ;
479- if matches ! ( data_type, DataType :: LargeList ( _) ) {
480- DataType :: LargeList ( Arc :: new ( Field :: new (
481- field. name ( ) ,
482- field_type,
483- field. is_nullable ( ) ,
484- ) ) )
485- } else {
486- DataType :: List ( Arc :: new ( Field :: new (
487- field. name ( ) ,
488- field_type,
489- field. is_nullable ( ) ,
490- ) ) )
491- }
467+ DataType :: List ( field) | DataType :: FixedSizeList ( field, _) => {
468+ let field_type =
469+ coerced_type_with_base_type_only ( field. data_type ( ) , base_type) ;
470+
471+ DataType :: List ( Arc :: new ( Field :: new (
472+ field. name ( ) ,
473+ field_type,
474+ field. is_nullable ( ) ,
475+ ) ) )
476+ }
477+ DataType :: LargeList ( field) => {
478+ let field_type =
479+ coerced_type_with_base_type_only ( field. data_type ( ) , base_type) ;
480+
481+ DataType :: LargeList ( Arc :: new ( Field :: new (
482+ field. name ( ) ,
483+ field_type,
484+ field. is_nullable ( ) ,
485+ ) ) )
492486 }
487+
493488 _ => base_type. clone ( ) ,
494489 }
495490}
496491
497492pub fn coerced_fixed_size_list_to_list ( data_type : & DataType ) -> DataType {
498493 match data_type {
499- DataType :: FixedSizeList ( field, _) => {
500- let field_type = match field. data_type ( ) {
501- DataType :: List ( _)
502- | DataType :: FixedSizeList ( _, _)
503- | DataType :: LargeList ( _) => {
504- coerced_fixed_size_list_to_list ( field. data_type ( ) )
505- }
506- _ => field. data_type ( ) . to_owned ( ) ,
507- } ;
508- if matches ! ( data_type, DataType :: LargeList ( _) ) {
509- DataType :: LargeList ( Arc :: new ( Field :: new (
510- field. name ( ) ,
511- field_type,
512- field. is_nullable ( ) ,
513- ) ) )
514- } else {
515- DataType :: List ( Arc :: new ( Field :: new (
516- field. name ( ) ,
517- field_type,
518- field. is_nullable ( ) ,
519- ) ) )
520- }
494+ DataType :: List ( field) | DataType :: FixedSizeList ( field, _) => {
495+ let field_type = coerced_fixed_size_list_to_list ( field. data_type ( ) ) ;
496+
497+ DataType :: List ( Arc :: new ( Field :: new (
498+ field. name ( ) ,
499+ field_type,
500+ field. is_nullable ( ) ,
501+ ) ) )
521502 }
522- _ => data_type. to_owned ( ) ,
503+ DataType :: LargeList ( field) => {
504+ let field_type = coerced_fixed_size_list_to_list ( field. data_type ( ) ) ;
505+
506+ DataType :: LargeList ( Arc :: new ( Field :: new (
507+ field. name ( ) ,
508+ field_type,
509+ field. is_nullable ( ) ,
510+ ) ) )
511+ }
512+
513+ _ => data_type. clone ( ) ,
523514 }
524515}
525516
0 commit comments