2020use crate :: utils:: make_scalar_function;
2121use arrow:: compute;
2222use arrow_array:: { Array , ArrayRef , ListArray } ;
23- use arrow_buffer:: { BooleanBufferBuilder , NullBuffer , OffsetBuffer } ;
23+ use arrow_buffer:: { NullBufferBuilder , OffsetBuffer } ;
2424use arrow_schema:: DataType :: { FixedSizeList , LargeList , List } ;
2525use arrow_schema:: { DataType , Field , SortOptions } ;
2626use datafusion_common:: cast:: { as_list_array, as_string_array} ;
@@ -172,19 +172,19 @@ pub fn array_sort_inner(args: &[ArrayRef]) -> Result<ArrayRef> {
172172
173173 let mut array_lengths = vec ! [ ] ;
174174 let mut arrays = vec ! [ ] ;
175- let mut valid = BooleanBufferBuilder :: new ( row_count) ;
175+ let mut valid = NullBufferBuilder :: new ( row_count) ;
176176 for i in 0 ..row_count {
177177 if list_array. is_null ( i) {
178178 array_lengths. push ( 0 ) ;
179- valid. append ( false ) ;
179+ valid. append_null ( ) ;
180180 } else {
181181 let arr_ref = list_array. value ( i) ;
182182 let arr_ref = arr_ref. as_ref ( ) ;
183183
184184 let sorted_array = compute:: sort ( arr_ref, sort_option) ?;
185185 array_lengths. push ( sorted_array. len ( ) ) ;
186186 arrays. push ( sorted_array) ;
187- valid. append ( true ) ;
187+ valid. append_non_null ( ) ;
188188 }
189189 }
190190
@@ -201,7 +201,7 @@ pub fn array_sort_inner(args: &[ArrayRef]) -> Result<ArrayRef> {
201201 Arc :: new ( Field :: new_list_field ( data_type, true ) ) ,
202202 OffsetBuffer :: from_lengths ( array_lengths) ,
203203 Arc :: new ( compute:: concat ( elements. as_slice ( ) ) ?) ,
204- Some ( NullBuffer :: new ( buffer) ) ,
204+ buffer,
205205 ) ;
206206 Ok ( Arc :: new ( list_arr) )
207207}
0 commit comments