| 64 | } |
| 65 | |
| 66 | pub fn write<const CHECK_VALID: bool>( |
| 67 | &mut self, |
| 68 | column: &ColumnarValueRef, |
| 69 | i: usize, |
| 70 | ) { |
| 71 | match column { |
| 72 | ColumnarValueRef::Scalar(s) => { |
| 73 | self.value_buffer.extend_from_slice(s); |
| 74 | self.tainted = true; |
| 75 | } |
| 76 | ColumnarValueRef::NullableArray(array) => { |
| 77 | if !CHECK_VALID || array.is_valid(i) { |
| 78 | self.value_buffer |
| 79 | .extend_from_slice(array.value(i).as_bytes()); |
| 80 | } |
| 81 | } |
| 82 | ColumnarValueRef::NullableLargeStringArray(array) => { |
| 83 | if !CHECK_VALID || array.is_valid(i) { |
| 84 | self.value_buffer |
| 85 | .extend_from_slice(array.value(i).as_bytes()); |
| 86 | } |
| 87 | } |
| 88 | ColumnarValueRef::NullableStringViewArray(array) => { |
| 89 | if !CHECK_VALID || array.is_valid(i) { |
| 90 | self.value_buffer |
| 91 | .extend_from_slice(array.value(i).as_bytes()); |
| 92 | } |
| 93 | } |
| 94 | ColumnarValueRef::NullableBinaryArray(array) => { |
| 95 | if !CHECK_VALID || array.is_valid(i) { |
| 96 | self.value_buffer.extend_from_slice(array.value(i)); |
| 97 | } |
| 98 | self.tainted = true; |
| 99 | } |
| 100 | ColumnarValueRef::NonNullableArray(array) => { |
| 101 | self.value_buffer |
| 102 | .extend_from_slice(array.value(i).as_bytes()); |
| 103 | } |
| 104 | ColumnarValueRef::NonNullableLargeStringArray(array) => { |
| 105 | self.value_buffer |
| 106 | .extend_from_slice(array.value(i).as_bytes()); |
| 107 | } |
| 108 | ColumnarValueRef::NonNullableStringViewArray(array) => { |
| 109 | self.value_buffer |
| 110 | .extend_from_slice(array.value(i).as_bytes()); |
| 111 | } |
| 112 | ColumnarValueRef::NonNullableBinaryArray(array) => { |
| 113 | self.value_buffer.extend_from_slice(array.value(i)); |
| 114 | self.tainted = true; |
| 115 | } |
| 116 | } |
| 117 | } |
| 118 | |
| 119 | pub fn append_offset(&mut self) -> Result<()> { |
| 120 | let next_offset: i32 = self |