@@ -219,22 +219,24 @@ macro_rules! get_id_list_column {
219219 let u64listdtype = DataType :: new_list( DataType :: UInt64 , false ) ;
220220 let column = get_column( & $array, & [ $( $name) ,+] )
221221 . unwrap_or_else( || new_null_array( & u64listdtype, $array. len( ) ) ) ;
222- match column. data_type( ) {
223- DataType :: List ( field) => {
224- if field. data_type( ) . is_unsigned_integer( ) {
225- IdListArray :: Unsigned ( column. as_any( ) . downcast_ref:: <ListArray >( ) . unwrap( ) . clone( ) )
226- } else if field. data_type( ) . is_integer( ) {
227- IdListArray :: Integer ( column. as_any( ) . downcast_ref:: <ListArray >( ) . unwrap( ) . clone( ) )
228- } else {
229- let strlistdtype = DataType :: new_list( DataType :: Utf8 , false ) ;
230- let str_column = cast_column( & column, & strlistdtype, & [ $( $name) ,+] ) ?;
231- IdListArray :: Arbitrary ( str_column. as_any( ) . downcast_ref:: <ListArray >( ) . unwrap( ) . clone( ) )
232- }
233- }
222+ let inner_field = match column. data_type( ) {
223+ DataType :: List ( field) => field,
224+ DataType :: ListView ( field) => field,
225+ DataType :: LargeList ( field) => field,
226+ DataType :: LargeListView ( field) => field,
234227 _ => {
235228 let full_name = & [ $( $name) ,+] . join( "." ) ;
236229 bail!( "Not a List column: {full_name}" ) ;
237230 }
231+ } ;
232+ if inner_field. data_type( ) . is_unsigned_integer( ) {
233+ IdListArray :: Unsigned ( column. as_any( ) . downcast_ref:: <ListArray >( ) . unwrap( ) . clone( ) )
234+ } else if inner_field. data_type( ) . is_integer( ) {
235+ IdListArray :: Integer ( column. as_any( ) . downcast_ref:: <ListArray >( ) . unwrap( ) . clone( ) )
236+ } else {
237+ let strlistdtype = DataType :: new_list( DataType :: Utf8 , false ) ;
238+ let str_column = cast_column( & column, & strlistdtype, & [ $( $name) ,+] ) ?;
239+ IdListArray :: Arbitrary ( str_column. as_any( ) . downcast_ref:: <ListArray >( ) . unwrap( ) . clone( ) )
238240 }
239241 }
240242 } ;
0 commit comments