diff --git a/arrow-select/src/take.rs b/arrow-select/src/take.rs index 83b58519fdb8..164981f9ff50 100644 --- a/arrow-select/src/take.rs +++ b/arrow-select/src/take.rs @@ -662,7 +662,7 @@ where IndexType::Native: ToPrimitive, OffsetType: ArrowPrimitiveType, OffsetType::Native: ToPrimitive + OffsetSizeTrait, - PrimitiveArray: From>>, + PrimitiveArray: From>, { // TODO: Some optimizations can be done here such as if it is // taking the whole list or a contiguous sublist @@ -670,7 +670,7 @@ where take_value_indices_from_list::(values, indices)?; let taken = take_impl::(values.values().as_ref(), &list_indices, None)?; - let value_offsets = Buffer::from_slice_ref(offsets); + let value_offsets = Buffer::from_vec(offsets); // create a new list with taken data and computed null information let list_data = ArrayDataBuilder::new(values.data_type().clone()) .len(indices.len()) @@ -881,7 +881,7 @@ where IndexType::Native: ToPrimitive, OffsetType: ArrowPrimitiveType, OffsetType::Native: OffsetSizeTrait + std::ops::Add + num::Zero + num::One, - PrimitiveArray: From>>, + PrimitiveArray: From>, { // TODO: benchmark this function, there might be a faster unsafe alternative let offsets: &[OffsetType::Native] = list.value_offsets(); @@ -912,7 +912,7 @@ where // if start == end, this slot is empty while curr < end { - values.push(Some(curr)); + values.push(curr); curr += num::One::one(); } if !list.is_valid(ix) {