You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by tu...@apache.org on 2023/01/19 21:53:46 UTC
[arrow-rs] branch master updated: Improve GenericBytesBuilder offset overflow panic message (#139) (#3564)
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 <17...@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)
}