Skip to content

Commit

Permalink
Improve GenericBytesBuilder offset overflow panic message (#139) (#3564)
Browse files Browse the repository at this point in the history
  • Loading branch information
tustvold committed Jan 19, 2023
1 parent d980235 commit 046cb96
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions arrow-array/src/builder/generic_bytes_builder.rs
Expand Up @@ -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.
Expand All @@ -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.
Expand All @@ -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)
}
Expand Down

0 comments on commit 046cb96

Please sign in to comment.