File tree Expand file tree Collapse file tree
datafusion/functions-aggregate-common/src/aggregate/count_distinct Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -163,11 +163,14 @@ where
163163 debug_assert_eq ! ( values. len( ) , 1 ) ;
164164 self . counts . resize ( total_num_groups, 0 ) ;
165165 let list_array = values[ 0 ] . as_list :: < i32 > ( ) ;
166+ let inner = list_array. values ( ) . as_primitive :: < T > ( ) ;
167+ let inner_values = inner. values ( ) ;
168+ let offsets = list_array. offsets ( ) ;
166169
167170 for ( row_idx, & group_idx) in group_indices. iter ( ) . enumerate ( ) {
168- let inner = list_array . value ( row_idx) ;
169- let inner_arr = inner . as_primitive :: < T > ( ) ;
170- for & value in inner_arr . values ( ) . iter ( ) {
171+ let start = offsets [ row_idx] as usize ;
172+ let end = offsets [ row_idx + 1 ] as usize ;
173+ for & value in & inner_values [ start..end ] {
171174 if self . seen . insert ( ( group_idx, value) ) {
172175 self . counts [ group_idx] += 1 ;
173176 }
You can’t perform that action at this time.
0 commit comments