(
array: &ArrayData,
)
| 40 | } |
| 41 | |
| 42 | pub(super) fn build_extend<T: ArrowNativeType + Integer + CheckedAdd + AsPrimitive<usize>>( |
| 43 | array: &ArrayData, |
| 44 | ) -> Extend<'_> { |
| 45 | let offsets = array.buffer::<T>(0); |
| 46 | let values = array.buffers()[1].as_slice(); |
| 47 | Box::new( |
| 48 | move |mutable: &mut _MutableArrayData, _, start: usize, len: usize| { |
| 49 | let offset_buffer = &mut mutable.buffer1; |
| 50 | let values_buffer = &mut mutable.buffer2; |
| 51 | |
| 52 | // this is safe due to how offset is built. See details on `get_last_offset` |
| 53 | let last_offset = unsafe { get_last_offset(offset_buffer) }; |
| 54 | |
| 55 | extend_offsets::<T>(offset_buffer, last_offset, &offsets[start..start + len + 1]); |
| 56 | // values |
| 57 | extend_offset_values::<T>(values_buffer, offsets, values, start, len); |
| 58 | }, |
| 59 | ) |
| 60 | } |
| 61 | |
| 62 | pub(super) fn extend_nulls<T: ArrowNativeType>(mutable: &mut _MutableArrayData, len: usize) { |
| 63 | let offset_buffer = &mut mutable.buffer1; |
nothing calls this directly
no test coverage detected