(data_type: &DataType, capacity: usize)
| 64 | /// creates 2 [`MutableBuffer`]s with a given `capacity` (in slots). |
| 65 | #[inline] |
| 66 | pub(crate) fn new_buffers(data_type: &DataType, capacity: usize) -> [MutableBuffer; 2] { |
| 67 | let empty_buffer = MutableBuffer::new(0); |
| 68 | match data_type { |
| 69 | DataType::Null => [empty_buffer, MutableBuffer::new(0)], |
| 70 | DataType::Boolean => { |
| 71 | let bytes = bit_util::ceil(capacity, 8); |
| 72 | let buffer = MutableBuffer::new(bytes); |
| 73 | [buffer, empty_buffer] |
| 74 | } |
| 75 | DataType::UInt8 |
| 76 | | DataType::UInt16 |
| 77 | | DataType::UInt32 |
| 78 | | DataType::UInt64 |
| 79 | | DataType::Int8 |
| 80 | | DataType::Int16 |
| 81 | | DataType::Int32 |
| 82 | | DataType::Int64 |
| 83 | | DataType::Float16 |
| 84 | | DataType::Float32 |
| 85 | | DataType::Float64 |
| 86 | | DataType::Decimal32(_, _) |
| 87 | | DataType::Decimal64(_, _) |
| 88 | | DataType::Decimal128(_, _) |
| 89 | | DataType::Decimal256(_, _) |
| 90 | | DataType::Date32 |
| 91 | | DataType::Time32(_) |
| 92 | | DataType::Date64 |
| 93 | | DataType::Time64(_) |
| 94 | | DataType::Duration(_) |
| 95 | | DataType::Timestamp(_, _) |
| 96 | | DataType::Interval(_) => [ |
| 97 | MutableBuffer::new(capacity * data_type.primitive_width().unwrap()), |
| 98 | empty_buffer, |
| 99 | ], |
| 100 | DataType::Utf8 | DataType::Binary => { |
| 101 | let mut buffer = MutableBuffer::new((1 + capacity) * mem::size_of::<i32>()); |
| 102 | // safety: `unsafe` code assumes that this buffer is initialized with one element |
| 103 | buffer.push(0i32); |
| 104 | [buffer, MutableBuffer::new(capacity * mem::size_of::<u8>())] |
| 105 | } |
| 106 | DataType::LargeUtf8 | DataType::LargeBinary => { |
| 107 | let mut buffer = MutableBuffer::new((1 + capacity) * mem::size_of::<i64>()); |
| 108 | // safety: `unsafe` code assumes that this buffer is initialized with one element |
| 109 | buffer.push(0i64); |
| 110 | [buffer, MutableBuffer::new(capacity * mem::size_of::<u8>())] |
| 111 | } |
| 112 | DataType::BinaryView | DataType::Utf8View => [ |
| 113 | MutableBuffer::new(capacity * mem::size_of::<u128>()), |
| 114 | empty_buffer, |
| 115 | ], |
| 116 | DataType::List(_) | DataType::Map(_, _) => { |
| 117 | // offset buffer always starts with a zero |
| 118 | let mut buffer = MutableBuffer::new((1 + capacity) * mem::size_of::<i32>()); |
| 119 | buffer.push(0i32); |
| 120 | [buffer, empty_buffer] |
| 121 | } |
| 122 | DataType::ListView(_) => [ |
| 123 | MutableBuffer::new(capacity * mem::size_of::<i32>()), |
no test coverage detected