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)
     }