This is an automated email from the ASF dual-hosted git repository. tustvold pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/master by this push: new 046cb96c8 Improve GenericBytesBuilder offset overflow panic message (#139) (#3564) 046cb96c8 is described below commit 046cb96c820afe70a196c34b527ce9ad7d0fbbb5 Author: Raphael Taylor-Davies <1781103+tustv...@users.noreply.github.com> AuthorDate: Thu Jan 19 21:53:38 2023 +0000 Improve GenericBytesBuilder offset overflow panic message (#139) (#3564) --- arrow-array/src/builder/generic_bytes_builder.rs | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/arrow-array/src/builder/generic_bytes_builder.rs b/arrow-array/src/builder/generic_bytes_builder.rs index 195628f47..8be3ac7f4 100644 --- a/arrow-array/src/builder/generic_bytes_builder.rs +++ b/arrow-array/src/builder/generic_bytes_builder.rs @@ -81,13 +81,18 @@ impl<T: ByteArrayType> GenericByteBuilder<T> { } } + #[inline] + fn next_offset(&self) -> T::Offset { + T::Offset::from_usize(self.value_builder.len()) + .expect("byte array offset overflow") + } + /// Appends a value into the builder. #[inline] pub fn append_value(&mut self, value: impl AsRef<T::Native>) { self.value_builder.append_slice(value.as_ref().as_ref()); self.null_buffer_builder.append(true); - self.offsets_builder - .append(T::Offset::from_usize(self.value_builder.len()).unwrap()); + self.offsets_builder.append(self.next_offset()); } /// Append an `Option` value into the builder. @@ -103,8 +108,7 @@ impl<T: ByteArrayType> GenericByteBuilder<T> { #[inline] pub fn append_null(&mut self) { self.null_buffer_builder.append(false); - self.offsets_builder - .append(T::Offset::from_usize(self.value_builder.len()).unwrap()); + self.offsets_builder.append(self.next_offset()); } /// Builds the [`GenericByteArray`] and reset this builder. @@ -116,8 +120,7 @@ impl<T: ByteArrayType> GenericByteBuilder<T> { .add_buffer(self.value_builder.finish()) .null_bit_buffer(self.null_buffer_builder.finish()); - self.offsets_builder - .append(T::Offset::from_usize(0).unwrap()); + self.offsets_builder.append(self.next_offset()); let array_data = unsafe { array_builder.build_unchecked() }; GenericByteArray::from(array_data) }