Aligns the provided `nulls` to the provided `data_offset` This is a temporary measure until offset is removed from ArrayData (#1799)
(data_offset: usize, nulls: Option<&NullBuffer>)
| 99 | /// |
| 100 | /// This is a temporary measure until offset is removed from ArrayData (#1799) |
| 101 | fn align_nulls(data_offset: usize, nulls: Option<&NullBuffer>) -> Option<Buffer> { |
| 102 | let nulls = nulls?; |
| 103 | if data_offset == nulls.offset() { |
| 104 | // Underlying buffer is already aligned |
| 105 | return Some(nulls.buffer().clone()); |
| 106 | } |
| 107 | if data_offset == 0 { |
| 108 | return Some(nulls.inner().sliced()); |
| 109 | } |
| 110 | let mut builder = MutableBuffer::new_null(data_offset + nulls.len()); |
| 111 | set_bits( |
| 112 | builder.as_slice_mut(), |
| 113 | nulls.validity(), |
| 114 | data_offset, |
| 115 | nulls.offset(), |
| 116 | nulls.len(), |
| 117 | ); |
| 118 | Some(builder.into()) |
| 119 | } |
| 120 | |
| 121 | struct ArrayPrivateData { |
| 122 | #[allow(dead_code)] |