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 8d7e2aec6 Make builder append methods infallible where possible (#2103)
8d7e2aec6 is described below

commit 8d7e2aec6358ab08dd128c544e090589782adcae
Author: Jรถrn Horstmann <[email protected]>
AuthorDate: Wed Jul 20 16:22:29 2022 +0200

    Make builder append methods infallible where possible (#2103)
    
    * Make builder append methods infallible where possible
    
    * Revert result changes in MapBuilder
    
    * Fix take_kernels benchmark
    
    * Clippy fixes
    
    * More clippy fixes
---
 arrow/benches/builder.rs                           |   8 +-
 arrow/benches/cast_kernels.rs                      |   8 +-
 arrow/benches/take_kernels.rs                      |   4 +-
 arrow/examples/builders.rs                         |  12 +-
 arrow/src/array/array_boolean.rs                   |   6 +-
 arrow/src/array/array_dictionary.rs                |   6 +-
 arrow/src/array/array_primitive.rs                 |   6 +-
 arrow/src/array/array_string.rs                    |  13 +-
 arrow/src/array/builder/boolean_builder.rs         |  44 ++---
 arrow/src/array/builder/buffer_builder.rs          |  13 +-
 arrow/src/array/builder/decimal_builder.rs         |  12 +-
 .../src/array/builder/fixed_size_binary_builder.rs |   7 +-
 arrow/src/array/builder/fixed_size_list_builder.rs |  60 ++++---
 arrow/src/array/builder/generic_binary_builder.rs  |  69 ++++----
 arrow/src/array/builder/generic_list_builder.rs    | 109 ++++++------
 arrow/src/array/builder/generic_string_builder.rs  |  45 +++--
 arrow/src/array/builder/map_builder.rs             |  24 +--
 arrow/src/array/builder/mod.rs                     |   6 +-
 arrow/src/array/builder/primitive_builder.rs       | 123 ++++++++------
 .../array/builder/primitive_dictionary_builder.rs  |  12 +-
 .../src/array/builder/string_dictionary_builder.rs |  22 +--
 arrow/src/array/builder/struct_builder.rs          |  46 +++--
 arrow/src/array/data.rs                            |  45 ++---
 arrow/src/array/equal/list.rs                      |  24 +--
 arrow/src/array/equal/mod.rs                       |  18 +-
 arrow/src/array/equal_json.rs                      |  30 ++--
 arrow/src/array/mod.rs                             |   6 +-
 arrow/src/array/transform/mod.rs                   | 188 ++++++++++-----------
 arrow/src/buffer/mutable.rs                        |   2 +-
 arrow/src/compute/kernels/arithmetic.rs            |  16 +-
 arrow/src/compute/kernels/arity.rs                 |   4 +-
 arrow/src/compute/kernels/cast.rs                  |  43 ++---
 arrow/src/compute/kernels/comparison.rs            |  46 ++---
 arrow/src/compute/kernels/filter.rs                |  32 ++--
 arrow/src/compute/kernels/regexp.rs                |  50 +++---
 arrow/src/compute/kernels/take.rs                  |  10 +-
 arrow/src/compute/kernels/temporal.rs              |  18 +-
 arrow/src/csv/reader.rs                            |   4 +-
 arrow/src/json/reader.rs                           |  30 ++--
 arrow/src/util/pretty.rs                           |  20 +--
 integration-testing/src/lib.rs                     |  42 ++---
 parquet/src/arrow/arrow_reader.rs                  |   2 +-
 parquet/src/arrow/arrow_writer/levels.rs           |  37 ++--
 parquet/src/arrow/arrow_writer/mod.rs              |  56 +++---
 parquet/src/arrow/buffer/converter.rs              |  16 +-
 45 files changed, 680 insertions(+), 714 deletions(-)

diff --git a/arrow/benches/builder.rs b/arrow/benches/builder.rs
index fd9f319e3..f6f90f475 100644
--- a/arrow/benches/builder.rs
+++ b/arrow/benches/builder.rs
@@ -43,7 +43,7 @@ fn bench_primitive(c: &mut Criterion) {
         b.iter(|| {
             let mut builder = Int64Builder::new(64);
             for _ in 0..NUM_BATCHES {
-                let _ = black_box(builder.append_slice(&data[..]));
+                builder.append_slice(&data[..]);
             }
             black_box(builder.finish());
         })
@@ -57,7 +57,7 @@ fn bench_primitive_nulls(c: &mut Criterion) {
         b.iter(|| {
             let mut builder = UInt8Builder::new(64);
             for _ in 0..NUM_BATCHES * BATCH_SIZE {
-                let _ = black_box(builder.append_null());
+                builder.append_null();
             }
             black_box(builder.finish());
         })
@@ -80,7 +80,7 @@ fn bench_bool(c: &mut Criterion) {
         b.iter(|| {
             let mut builder = BooleanBuilder::new(64);
             for _ in 0..NUM_BATCHES {
-                let _ = black_box(builder.append_slice(&data[..]));
+                builder.append_slice(&data[..]);
             }
             black_box(builder.finish());
         })
@@ -98,7 +98,7 @@ fn bench_string(c: &mut Criterion) {
         b.iter(|| {
             let mut builder = StringBuilder::new(64);
             for _ in 0..NUM_BATCHES * BATCH_SIZE {
-                let _ = black_box(builder.append_value(SAMPLE_STRING));
+                builder.append_value(SAMPLE_STRING);
             }
             black_box(builder.finish());
         })
diff --git a/arrow/benches/cast_kernels.rs b/arrow/benches/cast_kernels.rs
index d164e1fac..d6cba8b3c 100644
--- a/arrow/benches/cast_kernels.rs
+++ b/arrow/benches/cast_kernels.rs
@@ -49,12 +49,12 @@ fn build_utf8_date_array(size: usize, with_nulls: bool) -> 
ArrayRef {
 
     for _ in 0..size {
         if with_nulls && rng.gen::<f32>() > 0.8 {
-            builder.append_null().unwrap();
+            builder.append_null();
         } else {
             let string = NaiveDate::from_num_days_from_ce(rng.sample(range))
                 .format("%Y-%m-%d")
                 .to_string();
-            builder.append_value(&string).unwrap();
+            builder.append_value(&string);
         }
     }
     Arc::new(builder.finish())
@@ -70,12 +70,12 @@ fn build_utf8_date_time_array(size: usize, with_nulls: 
bool) -> ArrayRef {
 
     for _ in 0..size {
         if with_nulls && rng.gen::<f32>() > 0.8 {
-            builder.append_null().unwrap();
+            builder.append_null();
         } else {
             let string = NaiveDateTime::from_timestamp(rng.sample(range), 0)
                 .format("%Y-%m-%dT%H:%M:%S")
                 .to_string();
-            builder.append_value(&string).unwrap();
+            builder.append_value(&string);
         }
     }
     Arc::new(builder.finish())
diff --git a/arrow/benches/take_kernels.rs b/arrow/benches/take_kernels.rs
index dc9799b9a..42b38b6e5 100644
--- a/arrow/benches/take_kernels.rs
+++ b/arrow/benches/take_kernels.rs
@@ -33,10 +33,10 @@ fn create_random_index(size: usize, null_density: f32) -> 
UInt32Array {
     let mut builder = UInt32Builder::new(size);
     for _ in 0..size {
         if rng.gen::<f32>() < null_density {
-            builder.append_null().unwrap()
+            builder.append_null();
         } else {
             let value = rng.gen_range::<u32, _>(0u32..size as u32);
-            builder.append_value(value).unwrap();
+            builder.append_value(value);
         }
     }
     builder.finish()
diff --git a/arrow/examples/builders.rs b/arrow/examples/builders.rs
index d35cb5ab7..45d92f54d 100644
--- a/arrow/examples/builders.rs
+++ b/arrow/examples/builders.rs
@@ -37,19 +37,17 @@ fn main() {
     let mut primitive_array_builder = Int32Builder::new(100);
 
     // Append an individual primitive value
-    primitive_array_builder.append_value(55).unwrap();
+    primitive_array_builder.append_value(55);
 
     // Append a null value
-    primitive_array_builder.append_null().unwrap();
+    primitive_array_builder.append_null();
 
     // Append a slice of primitive values
-    primitive_array_builder.append_slice(&[39, 89, 12]).unwrap();
+    primitive_array_builder.append_slice(&[39, 89, 12]);
 
     // Append lots of values
-    primitive_array_builder.append_null().unwrap();
-    primitive_array_builder
-        .append_slice(&(25..50).collect::<Vec<i32>>())
-        .unwrap();
+    primitive_array_builder.append_null();
+    primitive_array_builder.append_slice(&(25..50).collect::<Vec<i32>>());
 
     // Build the `PrimitiveArray`
     let primitive_array = primitive_array_builder.finish();
diff --git a/arrow/src/array/array_boolean.rs b/arrow/src/array/array_boolean.rs
index e38a15f8e..6e11ff8cb 100644
--- a/arrow/src/array/array_boolean.rs
+++ b/arrow/src/array/array_boolean.rs
@@ -276,9 +276,9 @@ mod tests {
     #[test]
     fn test_boolean_with_null_fmt_debug() {
         let mut builder = BooleanArray::builder(3);
-        builder.append_value(true).unwrap();
-        builder.append_null().unwrap();
-        builder.append_value(false).unwrap();
+        builder.append_value(true);
+        builder.append_null();
+        builder.append_value(false);
         let arr = builder.finish();
         assert_eq!(
             "BooleanArray\n[\n  true,\n  null,\n  false,\n]",
diff --git a/arrow/src/array/array_dictionary.rs 
b/arrow/src/array/array_dictionary.rs
index 9350daae5..4f7d5f9c1 100644
--- a/arrow/src/array/array_dictionary.rs
+++ b/arrow/src/array/array_dictionary.rs
@@ -319,9 +319,7 @@ impl<'a, T: ArrowPrimitiveType + ArrowDictionaryKeyType> 
FromIterator<Option<&'a
                     .append(i)
                     .expect("Unable to append a value to a dictionary array.");
             } else {
-                builder
-                    .append_null()
-                    .expect("Unable to append a null value to a dictionary 
array.");
+                builder.append_null();
             }
         });
 
@@ -463,7 +461,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<UInt32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(12345678).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(22345678).unwrap();
         let array = builder.finish();
         assert_eq!(
diff --git a/arrow/src/array/array_primitive.rs 
b/arrow/src/array/array_primitive.rs
index 5d25412dc..4ab8d4f46 100644
--- a/arrow/src/array/array_primitive.rs
+++ b/arrow/src/array/array_primitive.rs
@@ -933,9 +933,9 @@ mod tests {
     #[test]
     fn test_int32_with_null_fmt_debug() {
         let mut builder = Int32Array::builder(3);
-        builder.append_slice(&[0, 1]).unwrap();
-        builder.append_null().unwrap();
-        builder.append_slice(&[3, 4]).unwrap();
+        builder.append_slice(&[0, 1]);
+        builder.append_null();
+        builder.append_slice(&[3, 4]);
         let arr = builder.finish();
         assert_eq!(
             "PrimitiveArray<Int32>\n[\n  0,\n  1,\n  null,\n  3,\n  4,\n]",
diff --git a/arrow/src/array/array_string.rs b/arrow/src/array/array_string.rs
index b48f058cf..85cb346a7 100644
--- a/arrow/src/array/array_string.rs
+++ b/arrow/src/array/array_string.rs
@@ -446,15 +446,12 @@ mod tests {
         let string_builder = StringBuilder::new(3);
         let mut list_of_string_builder = ListBuilder::new(string_builder);
 
-        list_of_string_builder.values().append_value("foo").unwrap();
-        list_of_string_builder.values().append_value("bar").unwrap();
-        list_of_string_builder.append(true).unwrap();
+        list_of_string_builder.values().append_value("foo");
+        list_of_string_builder.values().append_value("bar");
+        list_of_string_builder.append(true);
 
-        list_of_string_builder
-            .values()
-            .append_value("foobar")
-            .unwrap();
-        list_of_string_builder.append(true).unwrap();
+        list_of_string_builder.values().append_value("foobar");
+        list_of_string_builder.append(true);
         let list_of_strings = list_of_string_builder.finish();
 
         assert_eq!(list_of_strings.len(), 2);
diff --git a/arrow/src/array/builder/boolean_builder.rs 
b/arrow/src/array/builder/boolean_builder.rs
index d0063e566..1e052b644 100644
--- a/arrow/src/array/builder/boolean_builder.rs
+++ b/arrow/src/array/builder/boolean_builder.rs
@@ -23,7 +23,9 @@ use crate::array::ArrayData;
 use crate::array::ArrayRef;
 use crate::array::BooleanArray;
 use crate::datatypes::DataType;
-use crate::error::{ArrowError, Result};
+
+use crate::error::ArrowError;
+use crate::error::Result;
 
 use super::BooleanBufferBuilder;
 
@@ -81,44 +83,42 @@ impl BooleanBuilder {
 
     /// Appends a value of type `T` into the builder
     #[inline]
-    pub fn append_value(&mut self, v: bool) -> Result<()> {
+    pub fn append_value(&mut self, v: bool) {
         self.values_builder.append(v);
         if let Some(b) = self.bitmap_builder.as_mut() {
             b.append(true)
         }
-        Ok(())
     }
 
     /// Appends a null slot into the builder
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.materialize_bitmap_builder();
         self.bitmap_builder.as_mut().unwrap().append(false);
         self.values_builder.advance(1);
-        Ok(())
     }
 
     /// Appends an `Option<T>` into the builder
     #[inline]
-    pub fn append_option(&mut self, v: Option<bool>) -> Result<()> {
+    pub fn append_option(&mut self, v: Option<bool>) {
         match v {
-            None => self.append_null()?,
-            Some(v) => self.append_value(v)?,
+            None => self.append_null(),
+            Some(v) => self.append_value(v),
         };
-        Ok(())
     }
 
     /// Appends a slice of type `T` into the builder
     #[inline]
-    pub fn append_slice(&mut self, v: &[bool]) -> Result<()> {
+    pub fn append_slice(&mut self, v: &[bool]) {
         if let Some(b) = self.bitmap_builder.as_mut() {
             b.append_n(v.len(), true)
         }
         self.values_builder.append_slice(v);
-        Ok(())
     }
 
-    /// Appends values from a slice of type `T` and a validity boolean slice
+    /// Appends values from a slice of type `T` and a validity boolean slice.
+    ///
+    /// Returns an error if the slices are of different lengths
     #[inline]
     pub fn append_values(&mut self, values: &[bool], is_valid: &[bool]) -> 
Result<()> {
         if values.len() != is_valid.len() {
@@ -205,9 +205,9 @@ mod tests {
         let mut builder = BooleanArray::builder(10);
         for i in 0..10 {
             if i == 3 || i == 6 || i == 9 {
-                builder.append_value(true).unwrap();
+                builder.append_value(true);
             } else {
-                builder.append_value(false).unwrap();
+                builder.append_value(false);
             }
         }
 
@@ -229,10 +229,10 @@ mod tests {
             BooleanArray::from(vec![Some(true), Some(false), None, None, 
Some(false)]);
 
         let mut builder = BooleanArray::builder(0);
-        builder.append_slice(&[true, false]).unwrap();
-        builder.append_null().unwrap();
-        builder.append_null().unwrap();
-        builder.append_value(false).unwrap();
+        builder.append_slice(&[true, false]);
+        builder.append_null();
+        builder.append_null();
+        builder.append_value(false);
         let arr2 = builder.finish();
 
         assert_eq!(arr1, arr2);
@@ -243,7 +243,7 @@ mod tests {
         let arr1 = BooleanArray::from(vec![true; 513]);
 
         let mut builder = BooleanArray::builder(512);
-        builder.append_slice(&[true; 513]).unwrap();
+        builder.append_slice(&[true; 513]);
         let arr2 = builder.finish();
 
         assert_eq!(arr1, arr2);
@@ -252,9 +252,9 @@ mod tests {
     #[test]
     fn test_boolean_array_builder_no_null() {
         let mut builder = BooleanArray::builder(0);
-        builder.append_option(Some(true)).unwrap();
-        builder.append_value(false).unwrap();
-        builder.append_slice(&[true, false, true]).unwrap();
+        builder.append_option(Some(true));
+        builder.append_value(false);
+        builder.append_slice(&[true, false, true]);
         builder
             .append_values(&[false, false, true], &[true, true, true])
             .unwrap();
diff --git a/arrow/src/array/builder/buffer_builder.rs 
b/arrow/src/array/builder/buffer_builder.rs
index 9dd138398..dd116f035 100644
--- a/arrow/src/array/builder/buffer_builder.rs
+++ b/arrow/src/array/builder/buffer_builder.rs
@@ -362,7 +362,6 @@ mod tests {
     use crate::array::Int32BufferBuilder;
     use crate::array::Int8Builder;
     use crate::array::UInt8BufferBuilder;
-    use crate::error::Result;
 
     #[test]
     fn test_builder_i32_empty() {
@@ -457,17 +456,17 @@ mod tests {
     }
 
     #[test]
-    fn test_append_values() -> Result<()> {
+    fn test_append_values() {
         let mut a = Int8Builder::new(0);
-        a.append_value(1)?;
-        a.append_null()?;
-        a.append_value(-2)?;
+        a.append_value(1);
+        a.append_null();
+        a.append_value(-2);
         assert_eq!(a.len(), 3);
 
         // append values
         let values = &[1, 2, 3, 4];
         let is_valid = &[true, true, false, true];
-        a.append_values(values, is_valid)?;
+        a.append_values(values, is_valid);
 
         assert_eq!(a.len(), 7);
         let array = a.finish();
@@ -478,7 +477,5 @@ mod tests {
         assert_eq!(array.value(4), 2);
         assert!(array.is_null(5));
         assert_eq!(array.value(6), 4);
-
-        Ok(())
     }
 }
diff --git a/arrow/src/array/builder/decimal_builder.rs 
b/arrow/src/array/builder/decimal_builder.rs
index e5dfa32f0..214332fe4 100644
--- a/arrow/src/array/builder/decimal_builder.rs
+++ b/arrow/src/array/builder/decimal_builder.rs
@@ -108,7 +108,7 @@ impl Decimal128Builder {
 
     /// Append a null value to the array.
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.builder.append_null()
     }
 
@@ -167,6 +167,8 @@ impl Decimal256Builder {
     }
 
     /// Appends a [`Decimal256`] number into the builder.
+    ///
+    /// Returns an error if `value` has different precision, scale or length 
in bytes than this builder
     #[inline]
     pub fn append_value(&mut self, value: &Decimal256) -> Result<()> {
         if self.precision != value.precision() || self.scale != value.scale() {
@@ -187,7 +189,7 @@ impl Decimal256Builder {
 
     /// Append a null value to the array.
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.builder.append_null()
     }
 
@@ -215,7 +217,7 @@ mod tests {
         let mut builder = Decimal128Builder::new(30, 38, 6);
 
         builder.append_value(8_887_000_000_i128).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(-8_887_000_000_i128).unwrap();
         let decimal_array: Decimal128Array = builder.finish();
 
@@ -233,7 +235,7 @@ mod tests {
         builder
             .append_value(Decimal128::new_from_i128(30, 38, 
8_887_000_000_i128))
             .unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder
             .append_value(Decimal128::new_from_i128(30, 38, 
-8_887_000_000_i128))
             .unwrap();
@@ -255,7 +257,7 @@ mod tests {
         let value = Decimal256::try_new_from_bytes(40, 6, 
bytes.as_slice()).unwrap();
         builder.append_value(&value).unwrap();
 
-        builder.append_null().unwrap();
+        builder.append_null();
 
         bytes = vec![255; 32];
         let value = Decimal256::try_new_from_bytes(40, 6, 
bytes.as_slice()).unwrap();
diff --git a/arrow/src/array/builder/fixed_size_binary_builder.rs 
b/arrow/src/array/builder/fixed_size_binary_builder.rs
index e62aa8fa6..5ef89d8f4 100644
--- a/arrow/src/array/builder/fixed_size_binary_builder.rs
+++ b/arrow/src/array/builder/fixed_size_binary_builder.rs
@@ -71,11 +71,10 @@ impl FixedSizeBinaryBuilder {
 
     /// Append a null value to the array.
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.values_builder
             .append_slice(&vec![0u8; self.value_length as usize][..]);
         self.bitmap_builder.append(false);
-        Ok(())
     }
 
     /// Builds the [`FixedSizeBinaryArray`] and reset this builder.
@@ -137,7 +136,7 @@ mod tests {
 
         //  [b"hello", null, "arrow"]
         builder.append_value(b"hello").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(b"arrow").unwrap();
         let array: FixedSizeBinaryArray = builder.finish();
 
@@ -153,7 +152,7 @@ mod tests {
         let mut builder = FixedSizeBinaryBuilder::new(0, 0);
 
         builder.append_value(b"").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(b"").unwrap();
         assert!(!builder.is_empty());
 
diff --git a/arrow/src/array/builder/fixed_size_list_builder.rs 
b/arrow/src/array/builder/fixed_size_list_builder.rs
index 91c20d2a5..4e80e585a 100644
--- a/arrow/src/array/builder/fixed_size_list_builder.rs
+++ b/arrow/src/array/builder/fixed_size_list_builder.rs
@@ -23,7 +23,6 @@ use crate::array::ArrayRef;
 use crate::array::FixedSizeListArray;
 use crate::datatypes::DataType;
 use crate::datatypes::Field;
-use crate::error::Result;
 
 use super::ArrayBuilder;
 use super::BooleanBufferBuilder;
@@ -109,9 +108,8 @@ where
 
     /// Finish the current fixed-length list array slot
     #[inline]
-    pub fn append(&mut self, is_valid: bool) -> Result<()> {
+    pub fn append(&mut self, is_valid: bool) {
         self.bitmap_builder.append(is_valid);
-        Ok(())
     }
 
     /// Builds the [`FixedSizeListBuilder`] and reset this builder.
@@ -162,22 +160,22 @@ mod tests {
         let mut builder = FixedSizeListBuilder::new(values_builder, 3);
 
         //  [[0, 1, 2], null, [3, null, 5], [6, 7, null]]
-        builder.values().append_value(0).unwrap();
-        builder.values().append_value(1).unwrap();
-        builder.values().append_value(2).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_null().unwrap();
-        builder.values().append_null().unwrap();
-        builder.values().append_null().unwrap();
-        builder.append(false).unwrap();
-        builder.values().append_value(3).unwrap();
-        builder.values().append_null().unwrap();
-        builder.values().append_value(5).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_value(6).unwrap();
-        builder.values().append_value(7).unwrap();
-        builder.values().append_null().unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_value(0);
+        builder.values().append_value(1);
+        builder.values().append_value(2);
+        builder.append(true);
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.append(false);
+        builder.values().append_value(3);
+        builder.values().append_null();
+        builder.values().append_value(5);
+        builder.append(true);
+        builder.values().append_value(6);
+        builder.values().append_value(7);
+        builder.values().append_null();
+        builder.append(true);
         let list_array = builder.finish();
 
         assert_eq!(DataType::Int32, list_array.value_type());
@@ -202,17 +200,17 @@ mod tests {
         let values_builder = Int32Array::builder(5);
         let mut builder = FixedSizeListBuilder::new(values_builder, 3);
 
-        builder.values().append_slice(&[1, 2, 3]).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_slice(&[4, 5, 6]).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5, 6]);
+        builder.append(true);
 
         let mut arr = builder.finish();
         assert_eq!(2, arr.len());
         assert_eq!(0, builder.len());
 
-        builder.values().append_slice(&[7, 8, 9]).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_slice(&[7, 8, 9]);
+        builder.append(true);
         arr = builder.finish();
         assert_eq!(1, arr.len());
         assert_eq!(0, builder.len());
@@ -226,12 +224,12 @@ mod tests {
         let values_builder = Int32Array::builder(5);
         let mut builder = FixedSizeListBuilder::new(values_builder, 3);
 
-        builder.values().append_slice(&[1, 2, 3]).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_slice(&[4, 5, 6]).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_slice(&[7, 8, 9, 10]).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5, 6]);
+        builder.append(true);
+        builder.values().append_slice(&[7, 8, 9, 10]);
+        builder.append(true);
 
         builder.finish();
     }
diff --git a/arrow/src/array/builder/generic_binary_builder.rs 
b/arrow/src/array/builder/generic_binary_builder.rs
index 8b7a05854..52d51fb18 100644
--- a/arrow/src/array/builder/generic_binary_builder.rs
+++ b/arrow/src/array/builder/generic_binary_builder.rs
@@ -19,7 +19,6 @@ use crate::array::{
     ArrayBuilder, ArrayRef, GenericBinaryArray, GenericListBuilder, 
OffsetSizeTrait,
     UInt8Builder,
 };
-use crate::error::Result;
 use std::any::Any;
 use std::sync::Arc;
 
@@ -44,9 +43,8 @@ impl<OffsetSize: OffsetSizeTrait> 
GenericBinaryBuilder<OffsetSize> {
     /// Note, when appending individual byte values you must call `append` to 
delimit each
     /// distinct list value.
     #[inline]
-    pub fn append_byte(&mut self, value: u8) -> Result<()> {
-        self.builder.values().append_value(value)?;
-        Ok(())
+    pub fn append_byte(&mut self, value: u8) {
+        self.builder.values().append_value(value);
     }
 
     /// Appends a byte slice into the builder.
@@ -54,21 +52,20 @@ impl<OffsetSize: OffsetSizeTrait> 
GenericBinaryBuilder<OffsetSize> {
     /// Automatically calls the `append` method to delimit the slice appended 
in as a
     /// distinct array element.
     #[inline]
-    pub fn append_value(&mut self, value: impl AsRef<[u8]>) -> Result<()> {
-        self.builder.values().append_slice(value.as_ref())?;
-        self.builder.append(true)?;
-        Ok(())
+    pub fn append_value(&mut self, value: impl AsRef<[u8]>) {
+        self.builder.values().append_slice(value.as_ref());
+        self.builder.append(true);
     }
 
     /// Finish the current variable-length list array slot.
     #[inline]
-    pub fn append(&mut self, is_valid: bool) -> Result<()> {
+    pub fn append(&mut self, is_valid: bool) {
         self.builder.append(is_valid)
     }
 
     /// Append a null value to the array.
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.append(false)
     }
 
@@ -119,19 +116,19 @@ mod tests {
     fn test_binary_array_builder() {
         let mut builder = BinaryBuilder::new(20);
 
-        builder.append_byte(b'h').unwrap();
-        builder.append_byte(b'e').unwrap();
-        builder.append_byte(b'l').unwrap();
-        builder.append_byte(b'l').unwrap();
-        builder.append_byte(b'o').unwrap();
-        builder.append(true).unwrap();
-        builder.append(true).unwrap();
-        builder.append_byte(b'w').unwrap();
-        builder.append_byte(b'o').unwrap();
-        builder.append_byte(b'r').unwrap();
-        builder.append_byte(b'l').unwrap();
-        builder.append_byte(b'd').unwrap();
-        builder.append(true).unwrap();
+        builder.append_byte(b'h');
+        builder.append_byte(b'e');
+        builder.append_byte(b'l');
+        builder.append_byte(b'l');
+        builder.append_byte(b'o');
+        builder.append(true);
+        builder.append(true);
+        builder.append_byte(b'w');
+        builder.append_byte(b'o');
+        builder.append_byte(b'r');
+        builder.append_byte(b'l');
+        builder.append_byte(b'd');
+        builder.append(true);
 
         let binary_array = builder.finish();
 
@@ -148,19 +145,19 @@ mod tests {
     fn test_large_binary_array_builder() {
         let mut builder = LargeBinaryBuilder::new(20);
 
-        builder.append_byte(b'h').unwrap();
-        builder.append_byte(b'e').unwrap();
-        builder.append_byte(b'l').unwrap();
-        builder.append_byte(b'l').unwrap();
-        builder.append_byte(b'o').unwrap();
-        builder.append(true).unwrap();
-        builder.append(true).unwrap();
-        builder.append_byte(b'w').unwrap();
-        builder.append_byte(b'o').unwrap();
-        builder.append_byte(b'r').unwrap();
-        builder.append_byte(b'l').unwrap();
-        builder.append_byte(b'd').unwrap();
-        builder.append(true).unwrap();
+        builder.append_byte(b'h');
+        builder.append_byte(b'e');
+        builder.append_byte(b'l');
+        builder.append_byte(b'l');
+        builder.append_byte(b'o');
+        builder.append(true);
+        builder.append(true);
+        builder.append_byte(b'w');
+        builder.append_byte(b'o');
+        builder.append_byte(b'r');
+        builder.append_byte(b'l');
+        builder.append_byte(b'd');
+        builder.append(true);
 
         let binary_array = builder.finish();
 
diff --git a/arrow/src/array/builder/generic_list_builder.rs 
b/arrow/src/array/builder/generic_list_builder.rs
index cc39aad69..e478cc7a3 100644
--- a/arrow/src/array/builder/generic_list_builder.rs
+++ b/arrow/src/array/builder/generic_list_builder.rs
@@ -24,7 +24,6 @@ use crate::array::GenericListArray;
 use crate::array::OffsetSizeTrait;
 use crate::datatypes::DataType;
 use crate::datatypes::Field;
-use crate::error::Result;
 
 use super::{ArrayBuilder, BooleanBufferBuilder, BufferBuilder};
 
@@ -111,11 +110,10 @@ where
 
     /// Finish the current variable-length list array slot
     #[inline]
-    pub fn append(&mut self, is_valid: bool) -> Result<()> {
+    pub fn append(&mut self, is_valid: bool) {
         self.offsets_builder
             
.append(OffsetSize::from_usize(self.values_builder.len()).unwrap());
         self.bitmap_builder.append(is_valid);
-        Ok(())
     }
 
     /// Builds the [`GenericListArray`] and reset this builder.
@@ -171,17 +169,17 @@ mod tests {
         let mut builder = GenericListBuilder::<O, _>::new(values_builder);
 
         //  [[0, 1, 2], [3, 4, 5], [6, 7]]
-        builder.values().append_value(0).unwrap();
-        builder.values().append_value(1).unwrap();
-        builder.values().append_value(2).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_value(3).unwrap();
-        builder.values().append_value(4).unwrap();
-        builder.values().append_value(5).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_value(6).unwrap();
-        builder.values().append_value(7).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_value(0);
+        builder.values().append_value(1);
+        builder.values().append_value(2);
+        builder.append(true);
+        builder.values().append_value(3);
+        builder.values().append_value(4);
+        builder.values().append_value(5);
+        builder.append(true);
+        builder.values().append_value(6);
+        builder.values().append_value(7);
+        builder.append(true);
         let list_array = builder.finish();
 
         let values = list_array.values().data().buffers()[0].clone();
@@ -216,18 +214,19 @@ mod tests {
         let mut builder = GenericListBuilder::<O, _>::new(values_builder);
 
         //  [[0, 1, 2], null, [3, null, 5], [6, 7]]
-        builder.values().append_value(0).unwrap();
-        builder.values().append_value(1).unwrap();
-        builder.values().append_value(2).unwrap();
-        builder.append(true).unwrap();
-        builder.append(false).unwrap();
-        builder.values().append_value(3).unwrap();
-        builder.values().append_null().unwrap();
-        builder.values().append_value(5).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_value(6).unwrap();
-        builder.values().append_value(7).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_value(0);
+        builder.values().append_value(1);
+        builder.values().append_value(2);
+        builder.append(true);
+        builder.append(false);
+        builder.values().append_value(3);
+        builder.values().append_null();
+        builder.values().append_value(5);
+        builder.append(true);
+        builder.values().append_value(6);
+        builder.values().append_value(7);
+        builder.append(true);
+
         let list_array = builder.finish();
 
         assert_eq!(DataType::Int32, list_array.value_type());
@@ -252,17 +251,17 @@ mod tests {
         let values_builder = Int32Array::builder(5);
         let mut builder = ListBuilder::new(values_builder);
 
-        builder.values().append_slice(&[1, 2, 3]).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_slice(&[4, 5, 6]).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5, 6]);
+        builder.append(true);
 
         let mut arr = builder.finish();
         assert_eq!(2, arr.len());
         assert!(builder.is_empty());
 
-        builder.values().append_slice(&[7, 8, 9]).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_slice(&[7, 8, 9]);
+        builder.append(true);
         arr = builder.finish();
         assert_eq!(1, arr.len());
         assert!(builder.is_empty());
@@ -275,29 +274,29 @@ mod tests {
         let mut builder = ListBuilder::new(values_builder);
 
         //  [[[1, 2], [3, 4]], [[5, 6, 7], null, [8]], null, [[9, 10]]]
-        builder.values().values().append_value(1).unwrap();
-        builder.values().values().append_value(2).unwrap();
-        builder.values().append(true).unwrap();
-        builder.values().values().append_value(3).unwrap();
-        builder.values().values().append_value(4).unwrap();
-        builder.values().append(true).unwrap();
-        builder.append(true).unwrap();
-
-        builder.values().values().append_value(5).unwrap();
-        builder.values().values().append_value(6).unwrap();
-        builder.values().values().append_value(7).unwrap();
-        builder.values().append(true).unwrap();
-        builder.values().append(false).unwrap();
-        builder.values().values().append_value(8).unwrap();
-        builder.values().append(true).unwrap();
-        builder.append(true).unwrap();
-
-        builder.append(false).unwrap();
-
-        builder.values().values().append_value(9).unwrap();
-        builder.values().values().append_value(10).unwrap();
-        builder.values().append(true).unwrap();
-        builder.append(true).unwrap();
+        builder.values().values().append_value(1);
+        builder.values().values().append_value(2);
+        builder.values().append(true);
+        builder.values().values().append_value(3);
+        builder.values().values().append_value(4);
+        builder.values().append(true);
+        builder.append(true);
+
+        builder.values().values().append_value(5);
+        builder.values().values().append_value(6);
+        builder.values().values().append_value(7);
+        builder.values().append(true);
+        builder.values().append(false);
+        builder.values().values().append_value(8);
+        builder.values().append(true);
+        builder.append(true);
+
+        builder.append(false);
+
+        builder.values().values().append_value(9);
+        builder.values().values().append_value(10);
+        builder.values().append(true);
+        builder.append(true);
 
         let list_array = builder.finish();
 
diff --git a/arrow/src/array/builder/generic_string_builder.rs 
b/arrow/src/array/builder/generic_string_builder.rs
index 04205f878..d44aed44a 100644
--- a/arrow/src/array/builder/generic_string_builder.rs
+++ b/arrow/src/array/builder/generic_string_builder.rs
@@ -19,7 +19,6 @@ use crate::array::{
     ArrayBuilder, ArrayRef, GenericListBuilder, GenericStringArray, 
OffsetSizeTrait,
     UInt8Builder,
 };
-use crate::error::Result;
 use std::any::Any;
 use std::sync::Arc;
 
@@ -53,34 +52,32 @@ impl<OffsetSize: OffsetSizeTrait> 
GenericStringBuilder<OffsetSize> {
     /// Automatically calls the `append` method to delimit the string appended 
in as a
     /// distinct array element.
     #[inline]
-    pub fn append_value(&mut self, value: impl AsRef<str>) -> Result<()> {
+    pub fn append_value(&mut self, value: impl AsRef<str>) {
         self.builder
             .values()
-            .append_slice(value.as_ref().as_bytes())?;
-        self.builder.append(true)?;
-        Ok(())
+            .append_slice(value.as_ref().as_bytes());
+        self.builder.append(true);
     }
 
     /// Finish the current variable-length list array slot.
     #[inline]
-    pub fn append(&mut self, is_valid: bool) -> Result<()> {
+    pub fn append(&mut self, is_valid: bool) {
         self.builder.append(is_valid)
     }
 
     /// Append a null value to the array.
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.append(false)
     }
 
     /// Append an `Option` value to the array.
     #[inline]
-    pub fn append_option(&mut self, value: Option<impl AsRef<str>>) -> 
Result<()> {
+    pub fn append_option(&mut self, value: Option<impl AsRef<str>>) {
         match value {
-            None => self.append_null()?,
-            Some(v) => self.append_value(v)?,
+            None => self.append_null(),
+            Some(v) => self.append_value(v),
         };
-        Ok(())
     }
 
     /// Builds the `StringArray` and reset this builder.
@@ -141,9 +138,9 @@ mod tests {
     fn test_string_array_builder() {
         let mut builder = StringBuilder::new(20);
 
-        builder.append_value("hello").unwrap();
-        builder.append(true).unwrap();
-        builder.append_value("world").unwrap();
+        builder.append_value("hello");
+        builder.append(true);
+        builder.append_value("world");
 
         let string_array = builder.finish();
 
@@ -160,14 +157,14 @@ mod tests {
     fn test_string_array_builder_finish() {
         let mut builder = StringBuilder::new(10);
 
-        builder.append_value("hello").unwrap();
-        builder.append_value("world").unwrap();
+        builder.append_value("hello");
+        builder.append_value("world");
 
         let mut arr = builder.finish();
         assert_eq!(2, arr.len());
         assert_eq!(0, builder.len());
 
-        builder.append_value("arrow").unwrap();
+        builder.append_value("arrow");
         arr = builder.finish();
         assert_eq!(1, arr.len());
         assert_eq!(0, builder.len());
@@ -178,9 +175,9 @@ mod tests {
         let mut builder = StringBuilder::new(20);
 
         let var = "hello".to_owned();
-        builder.append_value(&var).unwrap();
-        builder.append(true).unwrap();
-        builder.append_value("world").unwrap();
+        builder.append_value(&var);
+        builder.append(true);
+        builder.append_value("world");
 
         let string_array = builder.finish();
 
@@ -196,10 +193,10 @@ mod tests {
     #[test]
     fn test_string_array_builder_append_option() {
         let mut builder = StringBuilder::new(20);
-        builder.append_option(Some("hello")).unwrap();
-        builder.append_option(None::<&str>).unwrap();
-        builder.append_option(None::<String>).unwrap();
-        builder.append_option(Some("world")).unwrap();
+        builder.append_option(Some("hello"));
+        builder.append_option(None::<&str>);
+        builder.append_option(None::<String>);
+        builder.append_option(Some("world"));
 
         let string_array = builder.finish();
 
diff --git a/arrow/src/array/builder/map_builder.rs 
b/arrow/src/array/builder/map_builder.rs
index 7c3021897..6078f8f22 100644
--- a/arrow/src/array/builder/map_builder.rs
+++ b/arrow/src/array/builder/map_builder.rs
@@ -18,6 +18,7 @@
 use std::any::Any;
 use std::sync::Arc;
 
+use super::{ArrayBuilder, BooleanBufferBuilder, BufferBuilder};
 use crate::array::array::Array;
 use crate::array::ArrayData;
 use crate::array::ArrayRef;
@@ -25,9 +26,8 @@ use crate::array::MapArray;
 use crate::array::StructArray;
 use crate::datatypes::DataType;
 use crate::datatypes::Field;
-use crate::error::{ArrowError, Result};
-
-use super::{ArrayBuilder, BooleanBufferBuilder, BufferBuilder};
+use crate::error::ArrowError;
+use crate::error::Result;
 
 #[derive(Debug)]
 pub struct MapBuilder<K: ArrayBuilder, V: ArrayBuilder> {
@@ -95,6 +95,8 @@ impl<K: ArrayBuilder, V: ArrayBuilder> MapBuilder<K, V> {
     }
 
     /// Finish the current map array slot
+    ///
+    /// Returns an error if the key and values builders are in an inconsistent 
state.
     #[inline]
     pub fn append(&mut self, is_valid: bool) -> Result<()> {
         if self.key_builder.len() != self.value_builder.len() {
@@ -209,16 +211,16 @@ mod tests {
         let mut builder = MapBuilder::new(None, string_builder, int_builder);
 
         let string_builder = builder.keys();
-        string_builder.append_value("joe").unwrap();
-        string_builder.append_null().unwrap();
-        string_builder.append_null().unwrap();
-        string_builder.append_value("mark").unwrap();
+        string_builder.append_value("joe");
+        string_builder.append_null();
+        string_builder.append_null();
+        string_builder.append_value("mark");
 
         let int_builder = builder.values();
-        int_builder.append_value(1).unwrap();
-        int_builder.append_value(2).unwrap();
-        int_builder.append_null().unwrap();
-        int_builder.append_value(4).unwrap();
+        int_builder.append_value(1);
+        int_builder.append_value(2);
+        int_builder.append_null();
+        int_builder.append_value(4);
 
         builder.append(true).unwrap();
         builder.append(false).unwrap();
diff --git a/arrow/src/array/builder/mod.rs b/arrow/src/array/builder/mod.rs
index 251d476a0..a5b7f1ed0 100644
--- a/arrow/src/array/builder/mod.rs
+++ b/arrow/src/array/builder/mod.rs
@@ -81,17 +81,17 @@ pub use union_builder::UnionBuilder;
 ///     .as_any_mut()
 ///     .downcast_mut::<Float64Builder>()
 ///     .unwrap()
-///     .append_value(3.14)?;
+///     .append_value(3.14);
 /// data_builders[1]
 ///     .as_any_mut()
 ///     .downcast_mut::<Int64Builder>()
 ///     .unwrap()
-///     .append_value(-1)?;
+///     .append_value(-1);
 /// data_builders[2]
 ///     .as_any_mut()
 ///     .downcast_mut::<StringBuilder>()
 ///     .unwrap()
-///     .append_value("๐ŸŽ")?;
+///     .append_value("๐ŸŽ");
 ///
 /// // Finish
 /// let array_refs: Vec<ArrayRef> = data_builders
diff --git a/arrow/src/array/builder/primitive_builder.rs 
b/arrow/src/array/builder/primitive_builder.rs
index ec1b408ed..36f4ae2b7 100644
--- a/arrow/src/array/builder/primitive_builder.rs
+++ b/arrow/src/array/builder/primitive_builder.rs
@@ -22,7 +22,6 @@ use crate::array::ArrayData;
 use crate::array::ArrayRef;
 use crate::array::PrimitiveArray;
 use crate::datatypes::ArrowPrimitiveType;
-use crate::error::{ArrowError, Result};
 
 use super::{ArrayBuilder, BooleanBufferBuilder, BufferBuilder};
 
@@ -83,71 +82,61 @@ impl<T: ArrowPrimitiveType> PrimitiveBuilder<T> {
 
     /// Appends a value of type `T` into the builder
     #[inline]
-    pub fn append_value(&mut self, v: T::Native) -> Result<()> {
+    pub fn append_value(&mut self, v: T::Native) {
         if let Some(b) = self.bitmap_builder.as_mut() {
             b.append(true);
         }
         self.values_builder.append(v);
-        Ok(())
     }
 
     /// Appends a null slot into the builder
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
-        self.materialize_bitmap_builder();
+    pub fn append_null(&mut self) {
+        self.materialize_bitmap_builder_if_needed();
         self.bitmap_builder.as_mut().unwrap().append(false);
         self.values_builder.advance(1);
-        Ok(())
     }
 
     #[inline]
-    pub fn append_nulls(&mut self, n: usize) -> Result<()> {
-        self.materialize_bitmap_builder();
+    pub fn append_nulls(&mut self, n: usize) {
+        self.materialize_bitmap_builder_if_needed();
         self.bitmap_builder.as_mut().unwrap().append_n(n, false);
         self.values_builder.advance(n);
-        Ok(())
     }
 
     /// Appends an `Option<T>` into the builder
     #[inline]
-    pub fn append_option(&mut self, v: Option<T::Native>) -> Result<()> {
+    pub fn append_option(&mut self, v: Option<T::Native>) {
         match v {
-            None => self.append_null()?,
-            Some(v) => self.append_value(v)?,
+            None => self.append_null(),
+            Some(v) => self.append_value(v),
         };
-        Ok(())
     }
 
     /// Appends a slice of type `T` into the builder
     #[inline]
-    pub fn append_slice(&mut self, v: &[T::Native]) -> Result<()> {
+    pub fn append_slice(&mut self, v: &[T::Native]) {
         if let Some(b) = self.bitmap_builder.as_mut() {
             b.append_n(v.len(), true);
         }
         self.values_builder.append_slice(v);
-        Ok(())
     }
 
     /// Appends values from a slice of type `T` and a validity boolean slice
     #[inline]
-    pub fn append_values(
-        &mut self,
-        values: &[T::Native],
-        is_valid: &[bool],
-    ) -> Result<()> {
-        if values.len() != is_valid.len() {
-            return Err(ArrowError::InvalidArgumentError(
-                "Value and validity lengths must be equal".to_string(),
-            ));
-        }
+    pub fn append_values(&mut self, values: &[T::Native], is_valid: &[bool]) {
+        assert_eq!(
+            values.len(),
+            is_valid.len(),
+            "Value and validity lengths must be equal"
+        );
         if is_valid.iter().any(|v| !*v) {
-            self.materialize_bitmap_builder();
+            self.materialize_bitmap_builder_if_needed();
         }
         if let Some(b) = self.bitmap_builder.as_mut() {
             b.append_slice(is_valid);
         }
         self.values_builder.append_slice(values);
-        Ok(())
     }
 
     /// Appends values from a trusted length iterator.
@@ -159,7 +148,7 @@ impl<T: ArrowPrimitiveType> PrimitiveBuilder<T> {
     pub unsafe fn append_trusted_len_iter(
         &mut self,
         iter: impl IntoIterator<Item = T::Native>,
-    ) -> Result<()> {
+    ) {
         let iter = iter.into_iter();
         let len = iter
             .size_hint()
@@ -170,7 +159,6 @@ impl<T: ArrowPrimitiveType> PrimitiveBuilder<T> {
             b.append_n(len, true);
         }
         self.values_builder.append_trusted_len_iter(iter);
-        Ok(())
     }
 
     /// Builds the `PrimitiveArray` and reset this builder.
@@ -195,10 +183,16 @@ impl<T: ArrowPrimitiveType> PrimitiveBuilder<T> {
         PrimitiveArray::<T>::from(array_data)
     }
 
-    fn materialize_bitmap_builder(&mut self) {
+    #[inline]
+    fn materialize_bitmap_builder_if_needed(&mut self) {
         if self.bitmap_builder.is_some() {
             return;
         }
+        self.materialize_bitmap_builder()
+    }
+
+    #[cold]
+    fn materialize_bitmap_builder(&mut self) {
         let mut b = BooleanBufferBuilder::new(0);
         b.reserve(self.values_builder.capacity());
         b.append_n(self.values_builder.len(), true);
@@ -216,16 +210,18 @@ mod tests {
     use super::*;
 
     use crate::array::Array;
+    use crate::array::BooleanArray;
     use crate::array::Date32Array;
     use crate::array::Int32Array;
     use crate::array::Int32Builder;
     use crate::array::TimestampSecondArray;
+    use crate::buffer::Buffer;
 
     #[test]
     fn test_primitive_array_builder_i32() {
         let mut builder = Int32Array::builder(5);
         for i in 0..5 {
-            builder.append_value(i).unwrap();
+            builder.append_value(i);
         }
         let arr = builder.finish();
         assert_eq!(5, arr.len());
@@ -241,7 +237,7 @@ mod tests {
     #[test]
     fn test_primitive_array_builder_i32_append_iter() {
         let mut builder = Int32Array::builder(5);
-        unsafe { builder.append_trusted_len_iter(0..5) }.unwrap();
+        unsafe { builder.append_trusted_len_iter(0..5) };
         let arr = builder.finish();
         assert_eq!(5, arr.len());
         assert_eq!(0, arr.offset());
@@ -256,7 +252,7 @@ mod tests {
     #[test]
     fn test_primitive_array_builder_i32_append_nulls() {
         let mut builder = Int32Array::builder(5);
-        builder.append_nulls(5).unwrap();
+        builder.append_nulls(5);
         let arr = builder.finish();
         assert_eq!(5, arr.len());
         assert_eq!(0, arr.offset());
@@ -271,7 +267,7 @@ mod tests {
     fn test_primitive_array_builder_date32() {
         let mut builder = Date32Array::builder(5);
         for i in 0..5 {
-            builder.append_value(i).unwrap();
+            builder.append_value(i);
         }
         let arr = builder.finish();
         assert_eq!(5, arr.len());
@@ -288,7 +284,7 @@ mod tests {
     fn test_primitive_array_builder_timestamp_second() {
         let mut builder = TimestampSecondArray::builder(5);
         for i in 0..5 {
-            builder.append_value(i).unwrap();
+            builder.append_value(i);
         }
         let arr = builder.finish();
         assert_eq!(5, arr.len());
@@ -301,16 +297,41 @@ mod tests {
         }
     }
 
+    #[test]
+    fn test_primitive_array_builder_bool() {
+        // 00000010 01001000
+        let buf = Buffer::from([72_u8, 2_u8]);
+        let mut builder = BooleanArray::builder(10);
+        for i in 0..10 {
+            if i == 3 || i == 6 || i == 9 {
+                builder.append_value(true);
+            } else {
+                builder.append_value(false);
+            }
+        }
+
+        let arr = builder.finish();
+        assert_eq!(&buf, arr.values());
+        assert_eq!(10, arr.len());
+        assert_eq!(0, arr.offset());
+        assert_eq!(0, arr.null_count());
+        for i in 0..10 {
+            assert!(!arr.is_null(i));
+            assert!(arr.is_valid(i));
+            assert_eq!(i == 3 || i == 6 || i == 9, arr.value(i), "failed at 
{}", i)
+        }
+    }
+
     #[test]
     fn test_primitive_array_builder_append_option() {
         let arr1 = Int32Array::from(vec![Some(0), None, Some(2), None, 
Some(4)]);
 
         let mut builder = Int32Array::builder(5);
-        builder.append_option(Some(0)).unwrap();
-        builder.append_option(None).unwrap();
-        builder.append_option(Some(2)).unwrap();
-        builder.append_option(None).unwrap();
-        builder.append_option(Some(4)).unwrap();
+        builder.append_option(Some(0));
+        builder.append_option(None);
+        builder.append_option(Some(2));
+        builder.append_option(None);
+        builder.append_option(Some(4));
         let arr2 = builder.finish();
 
         assert_eq!(arr1.len(), arr2.len());
@@ -330,11 +351,11 @@ mod tests {
         let arr1 = Int32Array::from(vec![Some(0), Some(2), None, None, 
Some(4)]);
 
         let mut builder = Int32Array::builder(5);
-        builder.append_value(0).unwrap();
-        builder.append_value(2).unwrap();
-        builder.append_null().unwrap();
-        builder.append_null().unwrap();
-        builder.append_value(4).unwrap();
+        builder.append_value(0);
+        builder.append_value(2);
+        builder.append_null();
+        builder.append_null();
+        builder.append_value(4);
         let arr2 = builder.finish();
 
         assert_eq!(arr1.len(), arr2.len());
@@ -354,10 +375,10 @@ mod tests {
         let arr1 = Int32Array::from(vec![Some(0), Some(2), None, None, 
Some(4)]);
 
         let mut builder = Int32Array::builder(5);
-        builder.append_slice(&[0, 2]).unwrap();
-        builder.append_null().unwrap();
-        builder.append_null().unwrap();
-        builder.append_value(4).unwrap();
+        builder.append_slice(&[0, 2]);
+        builder.append_null();
+        builder.append_null();
+        builder.append_value(4);
         let arr2 = builder.finish();
 
         assert_eq!(arr1.len(), arr2.len());
@@ -375,12 +396,12 @@ mod tests {
     #[test]
     fn test_primitive_array_builder_finish() {
         let mut builder = Int32Builder::new(5);
-        builder.append_slice(&[2, 4, 6, 8]).unwrap();
+        builder.append_slice(&[2, 4, 6, 8]);
         let mut arr = builder.finish();
         assert_eq!(4, arr.len());
         assert_eq!(0, builder.len());
 
-        builder.append_slice(&[1, 3, 5, 7, 9]).unwrap();
+        builder.append_slice(&[1, 3, 5, 7, 9]);
         arr = builder.finish();
         assert_eq!(5, arr.len());
         assert_eq!(0, builder.len());
diff --git a/arrow/src/array/builder/primitive_dictionary_builder.rs 
b/arrow/src/array/builder/primitive_dictionary_builder.rs
index 5cbd81720..b74bf9a43 100644
--- a/arrow/src/array/builder/primitive_dictionary_builder.rs
+++ b/arrow/src/array/builder/primitive_dictionary_builder.rs
@@ -43,7 +43,7 @@ use super::PrimitiveBuilder;
 ///  let value_builder = PrimitiveBuilder::<UInt32Type>::new(2);
 ///  let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
 ///  builder.append(12345678).unwrap();
-///  builder.append_null().unwrap();
+///  builder.append_null();
 ///  builder.append(22345678).unwrap();
 ///  let array = builder.finish();
 ///
@@ -140,21 +140,21 @@ where
     pub fn append(&mut self, value: V::Native) -> Result<K::Native> {
         if let Some(&key) = self.map.get(value.to_byte_slice()) {
             // Append existing value.
-            self.keys_builder.append_value(key)?;
+            self.keys_builder.append_value(key);
             Ok(key)
         } else {
             // Append new value.
             let key = K::Native::from_usize(self.values_builder.len())
                 .ok_or(ArrowError::DictionaryKeyOverflowError)?;
-            self.values_builder.append_value(value)?;
-            self.keys_builder.append_value(key as K::Native)?;
+            self.values_builder.append_value(value);
+            self.keys_builder.append_value(key as K::Native);
             self.map.insert(value.to_byte_slice().into(), key);
             Ok(key)
         }
     }
 
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.keys_builder.append_null()
     }
 
@@ -193,7 +193,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<UInt32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(12345678).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(22345678).unwrap();
         let array = builder.finish();
 
diff --git a/arrow/src/array/builder/string_dictionary_builder.rs 
b/arrow/src/array/builder/string_dictionary_builder.rs
index 77b2b2316..cfbda38c0 100644
--- a/arrow/src/array/builder/string_dictionary_builder.rs
+++ b/arrow/src/array/builder/string_dictionary_builder.rs
@@ -48,7 +48,7 @@ use std::sync::Arc;
 ///
 /// // The builder builds the dictionary value by value
 /// builder.append("abc").unwrap();
-/// builder.append_null().unwrap();
+/// builder.append_null();
 /// builder.append("def").unwrap();
 /// builder.append("def").unwrap();
 /// builder.append("abc").unwrap();
@@ -113,7 +113,7 @@ where
     ///
     /// let mut builder = 
StringDictionaryBuilder::new_with_dictionary(PrimitiveBuilder::<Int16Type>::new(3),
 &dictionary_values).unwrap();
     /// builder.append("def").unwrap();
-    /// builder.append_null().unwrap();
+    /// builder.append_null();
     /// builder.append("abc").unwrap();
     ///
     /// let dictionary_array = builder.finish();
@@ -153,9 +153,9 @@ where
                         });
                     }
 
-                    values_builder.append_value(value)?;
+                    values_builder.append_value(value);
                 }
-                None => values_builder.append_null()?,
+                None => values_builder.append_null(),
             }
         }
 
@@ -210,6 +210,8 @@ where
     /// Append a primitive value to the array. Return an existing index
     /// if already present in the values array or a new index if the
     /// value is appended to the values array.
+    ///
+    /// Returns an error if the new index would overflow the key type.
     pub fn append(&mut self, value: impl AsRef<str>) -> Result<K::Native> {
         let value = value.as_ref();
 
@@ -226,7 +228,7 @@ where
             RawEntryMut::Occupied(entry) => *entry.into_key(),
             RawEntryMut::Vacant(entry) => {
                 let index = storage.len();
-                storage.append_value(value)?;
+                storage.append_value(value);
                 let key = K::Native::from_usize(index)
                     .ok_or(ArrowError::DictionaryKeyOverflowError)?;
 
@@ -237,13 +239,13 @@ where
                     .0
             }
         };
-        self.keys_builder.append_value(key)?;
+        self.keys_builder.append_value(key);
 
         Ok(key)
     }
 
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.keys_builder.append_null()
     }
 
@@ -299,7 +301,7 @@ mod tests {
         let value_builder = StringBuilder::new(2);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("abc").unwrap();
@@ -327,7 +329,7 @@ mod tests {
             StringDictionaryBuilder::new_with_dictionary(key_builder, 
&dictionary)
                 .unwrap();
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("abc").unwrap();
@@ -359,7 +361,7 @@ mod tests {
             StringDictionaryBuilder::new_with_dictionary(key_builder, 
&dictionary)
                 .unwrap();
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("abc").unwrap();
         let array = builder.finish();
diff --git a/arrow/src/array/builder/struct_builder.rs 
b/arrow/src/array/builder/struct_builder.rs
index 0e70bf54a..c679dd621 100644
--- a/arrow/src/array/builder/struct_builder.rs
+++ b/arrow/src/array/builder/struct_builder.rs
@@ -23,7 +23,6 @@ use crate::array::builder::decimal_builder::Decimal128Builder;
 use crate::array::*;
 use crate::datatypes::DataType;
 use crate::datatypes::Field;
-use crate::error::Result;
 
 /// Array builder for Struct types.
 ///
@@ -202,15 +201,14 @@ impl StructBuilder {
     /// Appends an element (either null or non-null) to the struct. The actual 
elements
     /// should be appended for each child sub-array in a consistent way.
     #[inline]
-    pub fn append(&mut self, is_valid: bool) -> Result<()> {
+    pub fn append(&mut self, is_valid: bool) {
         self.bitmap_builder.append(is_valid);
         self.len += 1;
-        Ok(())
     }
 
     /// Appends a null element to the struct.
     #[inline]
-    pub fn append_null(&mut self) -> Result<()> {
+    pub fn append_null(&mut self) {
         self.append(false)
     }
 
@@ -264,23 +262,23 @@ mod tests {
         let string_builder = builder
             .field_builder::<StringBuilder>(0)
             .expect("builder at field 0 should be string builder");
-        string_builder.append_value("joe").unwrap();
-        string_builder.append_null().unwrap();
-        string_builder.append_null().unwrap();
-        string_builder.append_value("mark").unwrap();
+        string_builder.append_value("joe");
+        string_builder.append_null();
+        string_builder.append_null();
+        string_builder.append_value("mark");
 
         let int_builder = builder
             .field_builder::<Int32Builder>(1)
             .expect("builder at field 1 should be int builder");
-        int_builder.append_value(1).unwrap();
-        int_builder.append_value(2).unwrap();
-        int_builder.append_null().unwrap();
-        int_builder.append_value(4).unwrap();
+        int_builder.append_value(1);
+        int_builder.append_value(2);
+        int_builder.append_null();
+        int_builder.append_value(4);
 
-        builder.append(true).unwrap();
-        builder.append(true).unwrap();
-        builder.append_null().unwrap();
-        builder.append(true).unwrap();
+        builder.append(true);
+        builder.append(true);
+        builder.append_null();
+        builder.append(true);
 
         let arr = builder.finish();
 
@@ -327,19 +325,17 @@ mod tests {
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_slice(&[0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
-            .unwrap();
+            .append_slice(&[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]);
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
             .append_slice(&[
                 false, true, false, true, false, true, false, true, false, 
true,
-            ])
-            .unwrap();
+            ]);
 
         // Append slot values - all are valid.
         for _ in 0..10 {
-            assert!(builder.append(true).is_ok())
+            builder.append(true);
         }
 
         assert_eq!(10, builder.len());
@@ -352,17 +348,15 @@ mod tests {
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_slice(&[1, 3, 5, 7, 9])
-            .unwrap();
+            .append_slice(&[1, 3, 5, 7, 9]);
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
-            .append_slice(&[false, true, false, true, false])
-            .unwrap();
+            .append_slice(&[false, true, false, true, false]);
 
         // Append slot values - all are valid.
         for _ in 0..5 {
-            assert!(builder.append(true).is_ok())
+            builder.append(true);
         }
 
         assert_eq!(5, builder.len());
diff --git a/arrow/src/array/data.rs b/arrow/src/array/data.rs
index 0bb503e94..446c407f5 100644
--- a/arrow/src/array/data.rs
+++ b/arrow/src/array/data.rs
@@ -2625,66 +2625,56 @@ mod tests {
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_option(Some(10))
-            .unwrap();
+            .append_option(Some(10));
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
-            .append_option(Some(true))
-            .unwrap();
-        builder.append(true).unwrap();
+            .append_option(Some(true));
+        builder.append(true);
 
         // struct[1] = null
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_option(None)
-            .unwrap();
+            .append_option(None);
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
-            .append_option(None)
-            .unwrap();
-        builder.append(false).unwrap();
+            .append_option(None);
+        builder.append(false);
 
         // struct[2] = { a: null, b: false }
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_option(None)
-            .unwrap();
+            .append_option(None);
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
-            .append_option(Some(false))
-            .unwrap();
-        builder.append(true).unwrap();
+            .append_option(Some(false));
+        builder.append(true);
 
         // struct[3] = { a: 21, b: null }
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_option(Some(21))
-            .unwrap();
+            .append_option(Some(21));
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
-            .append_option(None)
-            .unwrap();
-        builder.append(true).unwrap();
+            .append_option(None);
+        builder.append(true);
 
         // struct[4] = { a: 18, b: false }
         builder
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_option(Some(18))
-            .unwrap();
+            .append_option(Some(18));
         builder
             .field_builder::<BooleanBuilder>(1)
             .unwrap()
-            .append_option(Some(false))
-            .unwrap();
-        builder.append(true).unwrap();
+            .append_option(Some(false));
+        builder.append(true);
 
         let struct_array = builder.finish();
         let struct_array_slice = struct_array.slice(1, 3);
@@ -2782,9 +2772,8 @@ mod tests {
         .unwrap();
         fixed_size_builder
             .values()
-            .append_slice(value_as_bytes.as_slice())
-            .unwrap();
-        fixed_size_builder.append(true).unwrap();
+            .append_slice(value_as_bytes.as_slice());
+        fixed_size_builder.append(true);
         let fixed_size_array = fixed_size_builder.finish();
 
         // Build ArrayData for Decimal
diff --git a/arrow/src/array/equal/list.rs b/arrow/src/array/equal/list.rs
index 0feefa7aa..d032b1f04 100644
--- a/arrow/src/array/equal/list.rs
+++ b/arrow/src/array/equal/list.rs
@@ -161,21 +161,21 @@ mod tests {
     fn list_array_non_zero_nulls() {
         // Tests handling of list arrays with non-empty null ranges
         let mut builder = ListBuilder::new(Int64Builder::new(10));
-        builder.values().append_value(1).unwrap();
-        builder.values().append_value(2).unwrap();
-        builder.values().append_value(3).unwrap();
-        builder.append(true).unwrap();
-        builder.append(false).unwrap();
+        builder.values().append_value(1);
+        builder.values().append_value(2);
+        builder.values().append_value(3);
+        builder.append(true);
+        builder.append(false);
         let array1 = builder.finish();
 
         let mut builder = ListBuilder::new(Int64Builder::new(10));
-        builder.values().append_value(1).unwrap();
-        builder.values().append_value(2).unwrap();
-        builder.values().append_value(3).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_null().unwrap();
-        builder.values().append_null().unwrap();
-        builder.append(false).unwrap();
+        builder.values().append_value(1);
+        builder.values().append_value(2);
+        builder.values().append_value(3);
+        builder.append(true);
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.append(false);
         let array2 = builder.finish();
 
         assert_eq!(array1, array2);
diff --git a/arrow/src/array/equal/mod.rs b/arrow/src/array/equal/mod.rs
index b8a7bc1bc..ccf63aa1f 100644
--- a/arrow/src/array/equal/mod.rs
+++ b/arrow/src/array/equal/mod.rs
@@ -611,10 +611,10 @@ mod tests {
         let mut builder = ListBuilder::new(Int32Builder::new(10));
         for d in data.as_ref() {
             if let Some(v) = d {
-                builder.values().append_slice(v.as_ref()).unwrap();
-                builder.append(true).unwrap()
+                builder.values().append_slice(v.as_ref());
+                builder.append(true);
             } else {
-                builder.append(false).unwrap()
+                builder.append(false);
             }
         }
         builder.finish().into_data()
@@ -772,7 +772,7 @@ mod tests {
             if let Some(v) = d {
                 builder.append_value(v.as_ref()).unwrap();
             } else {
-                builder.append_null().unwrap();
+                builder.append_null();
             }
         }
         builder.finish().into_data()
@@ -933,13 +933,13 @@ mod tests {
 
         for d in data.as_ref() {
             if let Some(v) = d {
-                builder.values().append_slice(v.as_ref()).unwrap();
-                builder.append(true).unwrap()
+                builder.values().append_slice(v.as_ref());
+                builder.append(true);
             } else {
                 for _ in 0..builder.value_length() {
-                    builder.values().append_null().unwrap();
+                    builder.values().append_null();
                 }
-                builder.append(false).unwrap()
+                builder.append(false);
             }
         }
         builder.finish().into_data()
@@ -1248,7 +1248,7 @@ mod tests {
             if let Some(v) = key {
                 builder.append(v).unwrap();
             } else {
-                builder.append_null().unwrap()
+                builder.append_null()
             }
         }
         builder.finish().into_data()
diff --git a/arrow/src/array/equal_json.rs b/arrow/src/array/equal_json.rs
index 95a2f0a43..30d9c8f84 100644
--- a/arrow/src/array/equal_json.rs
+++ b/arrow/src/array/equal_json.rs
@@ -468,10 +468,10 @@ mod tests {
     ) -> Result<ListArray> {
         for d in data.as_ref() {
             if let Some(v) = d {
-                builder.values().append_slice(v.as_ref())?;
-                builder.append(true)?
+                builder.values().append_slice(v.as_ref());
+                builder.append(true);
             } else {
-                builder.append(false)?
+                builder.append(false);
             }
         }
         Ok(builder.finish())
@@ -484,13 +484,13 @@ mod tests {
     ) -> Result<FixedSizeListArray> {
         for d in data.as_ref() {
             if let Some(v) = d {
-                builder.values().append_slice(v.as_ref())?;
-                builder.append(true)?
+                builder.values().append_slice(v.as_ref());
+                builder.append(true);
             } else {
                 for _ in 0..builder.value_length() {
-                    builder.values().append_null()?;
+                    builder.values().append_null();
                 }
-                builder.append(false)?
+                builder.append(false);
             }
         }
         Ok(builder.finish())
@@ -766,12 +766,12 @@ mod tests {
     fn test_binary_json_equal() {
         // Test the equal case
         let mut builder = BinaryBuilder::new(6);
-        builder.append_value(b"hello").unwrap();
-        builder.append_null().unwrap();
-        builder.append_null().unwrap();
-        builder.append_value(b"world").unwrap();
-        builder.append_null().unwrap();
-        builder.append_null().unwrap();
+        builder.append_value(b"hello");
+        builder.append_null();
+        builder.append_null();
+        builder.append_value(b"world");
+        builder.append_null();
+        builder.append_null();
         let arrow_array = builder.finish();
         let json_array: Value = serde_json::from_str(
             r#"
@@ -866,7 +866,7 @@ mod tests {
         // Test the equal case
         let mut builder = FixedSizeBinaryBuilder::new(15, 5);
         builder.append_value(b"hello").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(b"world").unwrap();
         let arrow_array: FixedSizeBinaryArray = builder.finish();
         let json_array: Value = serde_json::from_str(
@@ -884,7 +884,7 @@ mod tests {
 
         // Test unequal case
         builder.append_value(b"hello").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(b"world").unwrap();
         let arrow_array: FixedSizeBinaryArray = builder.finish();
         let json_array: Value = serde_json::from_str(
diff --git a/arrow/src/array/mod.rs b/arrow/src/array/mod.rs
index c5d90a42c..e533f9e75 100644
--- a/arrow/src/array/mod.rs
+++ b/arrow/src/array/mod.rs
@@ -79,13 +79,13 @@
 //! let mut builder = Int16Array::builder(100);
 //!
 //! // Append a single primitive value
-//! builder.append_value(1).unwrap();
+//! builder.append_value(1);
 //!
 //! // Append a null value
-//! builder.append_null().unwrap();
+//! builder.append_null();
 //!
 //! // Append a slice of primitive values
-//! builder.append_slice(&[2, 3, 4]).unwrap();
+//! builder.append_slice(&[2, 3, 4]);
 //!
 //! // Build the array
 //! let array = builder.finish();
diff --git a/arrow/src/array/transform/mod.rs b/arrow/src/array/transform/mod.rs
index 5c15503a9..873558790 100644
--- a/arrow/src/array/transform/mod.rs
+++ b/arrow/src/array/transform/mod.rs
@@ -806,15 +806,15 @@ mod tests {
     }
 
     #[test]
-    fn test_list_null_offset() -> Result<()> {
+    fn test_list_null_offset() {
         let int_builder = Int64Builder::new(24);
         let mut builder = ListBuilder::<Int64Builder>::new(int_builder);
-        builder.values().append_slice(&[1, 2, 3])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[4, 5])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[6, 7, 8])?;
-        builder.append(true)?;
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5]);
+        builder.append(true);
+        builder.values().append_slice(&[6, 7, 8]);
+        builder.append(true);
         let array = builder.finish();
         let arrays = vec![array.data()];
 
@@ -826,13 +826,11 @@ mod tests {
 
         let int_builder = Int64Builder::new(24);
         let mut builder = ListBuilder::<Int64Builder>::new(int_builder);
-        builder.values().append_slice(&[1, 2, 3])?;
-        builder.append(true)?;
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
         let expected = builder.finish();
 
         assert_eq!(array, expected);
-
-        Ok(())
     }
 
     /// tests extending from a variable-sized (strings and binary) array w/ 
offset with nulls
@@ -974,7 +972,7 @@ mod tests {
             if let Some(v) = key {
                 builder.append(v).unwrap();
             } else {
-                builder.append_null().unwrap()
+                builder.append_null()
             }
         }
         builder.finish().into_data()
@@ -1176,24 +1174,24 @@ mod tests {
     }
 
     #[test]
-    fn test_list_append() -> Result<()> {
+    fn test_list_append() {
         let mut builder = 
ListBuilder::<Int64Builder>::new(Int64Builder::new(24));
-        builder.values().append_slice(&[1, 2, 3])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[4, 5])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[6, 7, 8])?;
-        builder.values().append_slice(&[9, 10, 11])?;
-        builder.append(true)?;
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5]);
+        builder.append(true);
+        builder.values().append_slice(&[6, 7, 8]);
+        builder.values().append_slice(&[9, 10, 11]);
+        builder.append(true);
         let a = builder.finish();
 
         let a_builder = Int64Builder::new(24);
         let mut a_builder = ListBuilder::<Int64Builder>::new(a_builder);
-        a_builder.values().append_slice(&[12, 13])?;
-        a_builder.append(true)?;
-        a_builder.append(true)?;
-        a_builder.values().append_slice(&[14, 15])?;
-        a_builder.append(true)?;
+        a_builder.values().append_slice(&[12, 13]);
+        a_builder.append(true);
+        a_builder.append(true);
+        a_builder.values().append_slice(&[14, 15]);
+        a_builder.append(true);
         let b = a_builder.finish();
 
         let c = b.slice(1, 2);
@@ -1239,35 +1237,33 @@ mod tests {
         )
         .unwrap();
         assert_eq!(finished, expected_list_data);
-
-        Ok(())
     }
 
     #[test]
     fn test_list_nulls_append() -> Result<()> {
         let mut builder = 
ListBuilder::<Int64Builder>::new(Int64Builder::new(32));
-        builder.values().append_slice(&[1, 2, 3])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[4, 5])?;
-        builder.append(true)?;
-        builder.append(false)?;
-        builder.values().append_slice(&[6, 7, 8])?;
-        builder.values().append_null()?;
-        builder.values().append_null()?;
-        builder.values().append_slice(&[9, 10, 11])?;
-        builder.append(true)?;
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5]);
+        builder.append(true);
+        builder.append(false);
+        builder.values().append_slice(&[6, 7, 8]);
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.values().append_slice(&[9, 10, 11]);
+        builder.append(true);
         let a = builder.finish();
         let a = a.data();
 
         let mut builder = 
ListBuilder::<Int64Builder>::new(Int64Builder::new(32));
-        builder.values().append_slice(&[12, 13])?;
-        builder.append(true)?;
-        builder.append(false)?;
-        builder.append(true)?;
-        builder.values().append_null()?;
-        builder.values().append_null()?;
-        builder.values().append_slice(&[14, 15])?;
-        builder.append(true)?;
+        builder.values().append_slice(&[12, 13]);
+        builder.append(true);
+        builder.append(false);
+        builder.append(true);
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.values().append_slice(&[14, 15]);
+        builder.append(true);
         let b = builder.finish();
         let b = b.data();
         let c = b.slice(1, 2);
@@ -1325,24 +1321,24 @@ mod tests {
     }
 
     #[test]
-    fn test_list_append_with_capacities() -> Result<()> {
+    fn test_list_append_with_capacities() {
         let mut builder = 
ListBuilder::<Int64Builder>::new(Int64Builder::new(24));
-        builder.values().append_slice(&[1, 2, 3])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[4, 5])?;
-        builder.append(true)?;
-        builder.values().append_slice(&[6, 7, 8])?;
-        builder.values().append_slice(&[9, 10, 11])?;
-        builder.append(true)?;
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5]);
+        builder.append(true);
+        builder.values().append_slice(&[6, 7, 8]);
+        builder.values().append_slice(&[9, 10, 11]);
+        builder.append(true);
         let a = builder.finish();
 
         let a_builder = Int64Builder::new(24);
         let mut a_builder = ListBuilder::<Int64Builder>::new(a_builder);
-        a_builder.values().append_slice(&[12, 13])?;
-        a_builder.append(true)?;
-        a_builder.append(true)?;
-        a_builder.values().append_slice(&[14, 15, 16, 17])?;
-        a_builder.append(true)?;
+        a_builder.values().append_slice(&[12, 13]);
+        a_builder.append(true);
+        a_builder.append(true);
+        a_builder.values().append_slice(&[14, 15, 16, 17]);
+        a_builder.append(true);
         let b = a_builder.finish();
 
         let mutable = MutableArrayData::with_capacities(
@@ -1354,8 +1350,6 @@ mod tests {
         // capacities are rounded up to multiples of 64 by MutableBuffer
         assert_eq!(mutable.data.buffer1.capacity(), 64);
         assert_eq!(mutable.data.child_data[0].data.buffer1.capacity(), 192);
-
-        Ok(())
     }
 
     #[test]
@@ -1365,21 +1359,19 @@ mod tests {
             Int64Builder::new(32),
             Int64Builder::new(32),
         );
-        builder.keys().append_slice(&[1, 2, 3])?;
-        builder.values().append_slice(&[1, 2, 3])?;
-        builder.append(true)?;
-        builder.keys().append_slice(&[4, 5])?;
-        builder.values().append_slice(&[4, 5])?;
-        builder.append(true)?;
-        builder.append(false)?;
-        builder
-            .keys()
-            .append_slice(&[6, 7, 8, 100, 101, 9, 10, 11])?;
-        builder.values().append_slice(&[6, 7, 8])?;
-        builder.values().append_null()?;
-        builder.values().append_null()?;
-        builder.values().append_slice(&[9, 10, 11])?;
-        builder.append(true)?;
+        builder.keys().append_slice(&[1, 2, 3]);
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true).unwrap();
+        builder.keys().append_slice(&[4, 5]);
+        builder.values().append_slice(&[4, 5]);
+        builder.append(true).unwrap();
+        builder.append(false).unwrap();
+        builder.keys().append_slice(&[6, 7, 8, 100, 101, 9, 10, 11]);
+        builder.values().append_slice(&[6, 7, 8]);
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.values().append_slice(&[9, 10, 11]);
+        builder.append(true).unwrap();
 
         let a = builder.finish();
         let a = a.data();
@@ -1390,16 +1382,16 @@ mod tests {
             Int64Builder::new(32),
         );
 
-        builder.keys().append_slice(&[12, 13])?;
-        builder.values().append_slice(&[12, 13])?;
-        builder.append(true)?;
-        builder.append(false)?;
-        builder.append(true)?;
-        builder.keys().append_slice(&[100, 101, 14, 15])?;
-        builder.values().append_null()?;
-        builder.values().append_null()?;
-        builder.values().append_slice(&[14, 15])?;
-        builder.append(true)?;
+        builder.keys().append_slice(&[12, 13]);
+        builder.values().append_slice(&[12, 13]);
+        builder.append(true).unwrap();
+        builder.append(false).unwrap();
+        builder.append(true).unwrap();
+        builder.keys().append_slice(&[100, 101, 14, 15]);
+        builder.values().append_null();
+        builder.values().append_null();
+        builder.values().append_slice(&[14, 15]);
+        builder.append(true).unwrap();
 
         let b = builder.finish();
         let b = b.data();
@@ -1512,23 +1504,23 @@ mod tests {
     fn test_list_of_strings_append() -> Result<()> {
         // [["alpha", "beta", None]]
         let mut builder = ListBuilder::new(StringBuilder::new(32));
-        builder.values().append_value("Hello")?;
-        builder.values().append_value("Arrow")?;
-        builder.values().append_null()?;
-        builder.append(true)?;
+        builder.values().append_value("Hello");
+        builder.values().append_value("Arrow");
+        builder.values().append_null();
+        builder.append(true);
         let a = builder.finish();
 
         // [["alpha", "beta"], [None], ["gamma", "delta", None]]
         let mut builder = ListBuilder::new(StringBuilder::new(32));
-        builder.values().append_value("alpha")?;
-        builder.values().append_value("beta")?;
-        builder.append(true)?;
-        builder.values().append_null()?;
-        builder.append(true)?;
-        builder.values().append_value("gamma")?;
-        builder.values().append_value("delta")?;
-        builder.values().append_null()?;
-        builder.append(true)?;
+        builder.values().append_value("alpha");
+        builder.values().append_value("beta");
+        builder.append(true);
+        builder.values().append_null();
+        builder.append(true);
+        builder.values().append_value("gamma");
+        builder.values().append_value("delta");
+        builder.values().append_null();
+        builder.append(true);
         let b = builder.finish();
 
         let mut mutable = MutableArrayData::new(vec![a.data(), b.data()], 
false, 10);
diff --git a/arrow/src/buffer/mutable.rs b/arrow/src/buffer/mutable.rs
index 11783b82d..1c662ec23 100644
--- a/arrow/src/buffer/mutable.rs
+++ b/arrow/src/buffer/mutable.rs
@@ -377,7 +377,7 @@ impl MutableBuffer {
 
 /// # Safety
 /// `ptr` must be allocated for `old_capacity`.
-#[inline]
+#[cold]
 unsafe fn reallocate(
     ptr: NonNull<u8>,
     old_capacity: usize,
diff --git a/arrow/src/compute/kernels/arithmetic.rs 
b/arrow/src/compute/kernels/arithmetic.rs
index 67fb61356..c7ccc09c1 100644
--- a/arrow/src/compute/kernels/arithmetic.rs
+++ b/arrow/src/compute/kernels/arithmetic.rs
@@ -1245,7 +1245,7 @@ mod tests {
         builder.append(6).unwrap();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(10).unwrap();
         let b = builder.finish();
 
@@ -1274,7 +1274,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(5).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
         builder.append(9).unwrap();
@@ -1329,7 +1329,7 @@ mod tests {
         builder.append(6).unwrap();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(10).unwrap();
         let b = builder.finish();
 
@@ -1358,7 +1358,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(5).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
         builder.append(9).unwrap();
@@ -1413,7 +1413,7 @@ mod tests {
         builder.append(6).unwrap();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(10).unwrap();
         let b = builder.finish();
 
@@ -1457,7 +1457,7 @@ mod tests {
         builder.append(5).unwrap();
         builder.append(3).unwrap();
         builder.append(1).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(3).unwrap();
         let b = builder.finish();
 
@@ -1486,7 +1486,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(5).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
         builder.append(9).unwrap();
@@ -1672,7 +1672,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(5).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
         builder.append(9).unwrap();
diff --git a/arrow/src/compute/kernels/arity.rs 
b/arrow/src/compute/kernels/arity.rs
index 513521816..3af9306d5 100644
--- a/arrow/src/compute/kernels/arity.rs
+++ b/arrow/src/compute/kernels/arity.rs
@@ -235,7 +235,7 @@ mod tests {
         builder.append(6).unwrap();
         builder.append(7).unwrap();
         builder.append(8).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(9).unwrap();
         let dictionary_array = builder.finish();
 
@@ -246,7 +246,7 @@ mod tests {
         builder.append(7).unwrap();
         builder.append(8).unwrap();
         builder.append(9).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(10).unwrap();
         let expected = builder.finish();
 
diff --git a/arrow/src/compute/kernels/cast.rs 
b/arrow/src/compute/kernels/cast.rs
index 9abb9ec42..954acef76 100644
--- a/arrow/src/compute/kernels/cast.rs
+++ b/arrow/src/compute/kernels/cast.rs
@@ -40,6 +40,7 @@ use std::sync::Arc;
 
 use crate::array::BasicDecimalArray;
 use crate::buffer::MutableBuffer;
+use crate::compute::divide_scalar;
 use crate::compute::kernels::arithmetic::{divide, multiply};
 use crate::compute::kernels::arity::unary;
 use crate::compute::kernels::cast_utils::string_to_timestamp_nanos;
@@ -320,14 +321,14 @@ macro_rules! cast_decimal_to_integer {
         let max_bound = ($NATIVE_TYPE::MAX) as i128;
         for i in 0..array.len() {
             if array.is_null(i) {
-                value_builder.append_null()?;
+                value_builder.append_null();
             } else {
                 let v = array.value(i).as_i128() / div;
                 // check the overflow
                 // For example: Decimal(128,10,0) as i8
                 // 128 is out of range i8
                 if v <= max_bound && v >= min_bound {
-                    value_builder.append_value(v as $NATIVE_TYPE)?;
+                    value_builder.append_value(v as $NATIVE_TYPE);
                 } else {
                     return Err(ArrowError::CastError(format!(
                         "value of {} is out of range {}",
@@ -348,12 +349,12 @@ macro_rules! cast_decimal_to_float {
         let mut value_builder = $VALUE_BUILDER::new(array.len());
         for i in 0..array.len() {
             if array.is_null(i) {
-                value_builder.append_null()?;
+                value_builder.append_null();
             } else {
                 // The range of f32 or f64 is larger than i128, we don't need 
to check overflow.
                 // cast the i128 to f64 will lose precision, for example the 
`112345678901234568` will be as `112345678901234560`.
                 let v = (array.value(i).as_i128() as f64 / div) as 
$NATIVE_TYPE;
-                value_builder.append_value(v)?;
+                value_builder.append_value(v);
             }
         }
         Ok(Arc::new(value_builder.finish()))
@@ -1042,10 +1043,7 @@ pub fn cast_with_options(
             // we either divide or multiply, depending on size of each unit
             // units are never the same when the types are the same
             let converted = if from_size >= to_size {
-                divide(
-                    &time_array,
-                    &Int64Array::from(vec![from_size / to_size; array.len()]),
-                )?
+                divide_scalar(&time_array, from_size / to_size)?
             } else {
                 multiply(
                     &time_array,
@@ -1075,12 +1073,15 @@ pub fn cast_with_options(
         (Timestamp(from_unit, _), Date32) => {
             let time_array = Int64Array::from(array.data().clone());
             let from_size = time_unit_multiple(from_unit) * SECONDS_IN_DAY;
+
+            // Int32Array::from_iter(tim.iter)
             let mut b = Date32Builder::new(array.len());
+
             for i in 0..array.len() {
-                if array.is_null(i) {
-                    b.append_null()?;
+                if time_array.is_null(i) {
+                    b.append_null();
                 } else {
-                    b.append_value((time_array.value(i) / from_size) as i32)?;
+                    b.append_value((time_array.value(i) / from_size) as i32);
                 }
             }
 
@@ -1650,11 +1651,11 @@ where
 
     for i in 0..from.len() {
         if from.is_null(i) {
-            b.append_null()?;
+            b.append_null();
         } else if from.value(i) != T::default_value() {
-            b.append_value(true)?;
+            b.append_value(true);
         } else {
-            b.append_value(false)?;
+            b.append_value(false);
         }
     }
 
@@ -1908,7 +1909,7 @@ where
     // copy each element one at a time
     for i in 0..values.len() {
         if values.is_null(i) {
-            b.append_null()?;
+            b.append_null();
         } else {
             b.append(values.value(i))?;
         }
@@ -1935,7 +1936,7 @@ where
     // copy each element one at a time
     for i in 0..values.len() {
         if values.is_null(i) {
-            b.append_null()?;
+            b.append_null();
         } else {
             b.append(values.value(i))?;
         }
@@ -4072,7 +4073,7 @@ mod tests {
         let values_builder = StringBuilder::new(10);
         let mut builder = StringDictionaryBuilder::new(keys_builder, 
values_builder);
         builder.append("one").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("three").unwrap();
         let array: ArrayRef = Arc::new(builder.finish());
 
@@ -4195,7 +4196,7 @@ mod tests {
         let values_builder = PrimitiveBuilder::<Int32Type>::new(10);
         let mut builder = PrimitiveDictionaryBuilder::new(keys_builder, 
values_builder);
         builder.append(1).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(3).unwrap();
         let array: ArrayRef = Arc::new(builder.finish());
 
@@ -4216,9 +4217,9 @@ mod tests {
         use DataType::*;
 
         let mut builder = PrimitiveBuilder::<Int32Type>::new(10);
-        builder.append_value(1).unwrap();
-        builder.append_null().unwrap();
-        builder.append_value(3).unwrap();
+        builder.append_value(1);
+        builder.append_null();
+        builder.append_value(3);
         let array: ArrayRef = Arc::new(builder.finish());
 
         let expected = vec!["1", "null", "3"];
diff --git a/arrow/src/compute/kernels/comparison.rs 
b/arrow/src/compute/kernels/comparison.rs
index 0a6d60cea..5344e160c 100644
--- a/arrow/src/compute/kernels/comparison.rs
+++ b/arrow/src/compute/kernels/comparison.rs
@@ -3680,17 +3680,17 @@ mod tests {
         let values_builder = StringBuilder::new(10);
         let mut builder = ListBuilder::new(values_builder);
 
-        builder.values().append_value("Lorem").unwrap();
-        builder.values().append_value("ipsum").unwrap();
-        builder.values().append_null().unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_value("sit").unwrap();
-        builder.values().append_value("amet").unwrap();
-        builder.values().append_value("Lorem").unwrap();
-        builder.append(true).unwrap();
-        builder.append(false).unwrap();
-        builder.values().append_value("ipsum").unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_value("Lorem");
+        builder.values().append_value("ipsum");
+        builder.values().append_null();
+        builder.append(true);
+        builder.values().append_value("sit");
+        builder.values().append_value("amet");
+        builder.values().append_value("Lorem");
+        builder.append(true);
+        builder.append(false);
+        builder.values().append_value("ipsum");
+        builder.append(true);
 
         //  [["Lorem", "ipsum", null], ["sit", "amet", "Lorem"], null, 
["ipsum"]]
         // value_offsets = [0, 3, 6, 6]
@@ -4261,7 +4261,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(123).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(23).unwrap();
         let array = builder.finish();
         let a_eq = eq_dyn_scalar(&array, 123).unwrap();
@@ -4305,7 +4305,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(123).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(23).unwrap();
         let array = builder.finish();
         let a_eq = lt_dyn_scalar(&array, 123).unwrap();
@@ -4348,7 +4348,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(123).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(23).unwrap();
         let array = builder.finish();
         let a_eq = lt_eq_dyn_scalar(&array, 23).unwrap();
@@ -4392,7 +4392,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(123).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(23).unwrap();
         let array = builder.finish();
         let a_eq = gt_dyn_scalar(&array, 23).unwrap();
@@ -4436,7 +4436,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(22).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(23).unwrap();
         let array = builder.finish();
         let a_eq = gt_eq_dyn_scalar(&array, 23).unwrap();
@@ -4480,7 +4480,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<Int32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(22).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(23).unwrap();
         let array = builder.finish();
         let a_eq = neq_dyn_scalar(&array, 23).unwrap();
@@ -4624,7 +4624,7 @@ mod tests {
         let value_builder = StringBuilder::new(100);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("abc").unwrap();
@@ -4652,7 +4652,7 @@ mod tests {
         let value_builder = StringBuilder::new(100);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("abc").unwrap();
@@ -4681,7 +4681,7 @@ mod tests {
         let value_builder = StringBuilder::new(100);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("xyz").unwrap();
@@ -4710,7 +4710,7 @@ mod tests {
         let value_builder = StringBuilder::new(100);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("xyz").unwrap();
@@ -4740,7 +4740,7 @@ mod tests {
         let value_builder = StringBuilder::new(100);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("xyz").unwrap();
@@ -4769,7 +4769,7 @@ mod tests {
         let value_builder = StringBuilder::new(100);
         let mut builder = StringDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append("abc").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append("def").unwrap();
         builder.append("def").unwrap();
         builder.append("abc").unwrap();
diff --git a/arrow/src/compute/kernels/filter.rs 
b/arrow/src/compute/kernels/filter.rs
index 7b88de7b8..95a1bfa4d 100644
--- a/arrow/src/compute/kernels/filter.rs
+++ b/arrow/src/compute/kernels/filter.rs
@@ -1040,10 +1040,10 @@ mod tests {
     fn test_filter_string_array_with_negated_boolean_array() {
         let a = StringArray::from(vec!["hello", " ", "world", "!"]);
         let mut bb = BooleanBuilder::new(2);
-        bb.append_value(false).unwrap();
-        bb.append_value(true).unwrap();
-        bb.append_value(false).unwrap();
-        bb.append_value(true).unwrap();
+        bb.append_value(false);
+        bb.append_value(true);
+        bb.append_value(false);
+        bb.append_value(true);
         let b = bb.finish();
         let b = crate::compute::not(&b).unwrap();
 
@@ -1418,17 +1418,17 @@ mod tests {
         let mut builder =
             MapBuilder::new(None, StringBuilder::new(16), 
Int64Builder::new(4));
         // [{"key1": 1}, {"key2": 2, "key3": 3}, null, {"key1": 1}
-        builder.keys().append_value("key1").unwrap();
-        builder.values().append_value(1).unwrap();
+        builder.keys().append_value("key1");
+        builder.values().append_value(1);
         builder.append(true).unwrap();
-        builder.keys().append_value("key2").unwrap();
-        builder.keys().append_value("key3").unwrap();
-        builder.values().append_value(2).unwrap();
-        builder.values().append_value(3).unwrap();
+        builder.keys().append_value("key2");
+        builder.keys().append_value("key3");
+        builder.values().append_value(2);
+        builder.values().append_value(3);
         builder.append(true).unwrap();
         builder.append(false).unwrap();
-        builder.keys().append_value("key1").unwrap();
-        builder.values().append_value(1).unwrap();
+        builder.keys().append_value("key1");
+        builder.values().append_value(1);
         builder.append(true).unwrap();
         let maparray = Arc::new(builder.finish()) as ArrayRef;
 
@@ -1439,11 +1439,11 @@ mod tests {
 
         let mut builder =
             MapBuilder::new(None, StringBuilder::new(8), Int64Builder::new(2));
-        builder.keys().append_value("key1").unwrap();
-        builder.values().append_value(1).unwrap();
+        builder.keys().append_value("key1");
+        builder.values().append_value(1);
         builder.append(true).unwrap();
-        builder.keys().append_value("key1").unwrap();
-        builder.values().append_value(1).unwrap();
+        builder.keys().append_value("key1");
+        builder.values().append_value(1);
         builder.append(true).unwrap();
         let expected = Arc::new(builder.finish()) as ArrayRef;
 
diff --git a/arrow/src/compute/kernels/regexp.rs 
b/arrow/src/compute/kernels/regexp.rs
index 081a6e193..b52a3e231 100644
--- a/arrow/src/compute/kernels/regexp.rs
+++ b/arrow/src/compute/kernels/regexp.rs
@@ -61,8 +61,8 @@ pub fn regexp_match<OffsetSize: OffsetSizeTrait>(
                 // Required for Postgres compatibility:
                 // SELECT regexp_match('foobarbequebaz', ''); = {""}
                 (Some(_), Some(pattern)) if pattern == *"" => {
-                    list_builder.values().append_value("")?;
-                    list_builder.append(true)?;
+                    list_builder.values().append_value("");
+                    list_builder.append(true);
                 }
                 (Some(value), Some(pattern)) => {
                     let existing_pattern = patterns.get(&pattern);
@@ -82,14 +82,14 @@ pub fn regexp_match<OffsetSize: OffsetSizeTrait>(
                     match re.captures(value) {
                         Some(caps) => {
                             for m in caps.iter().skip(1).flatten() {
-                                
list_builder.values().append_value(m.as_str())?;
+                                list_builder.values().append_value(m.as_str());
                             }
-                            list_builder.append(true)?
+                            list_builder.append(true);
                         }
-                        None => list_builder.append(false)?,
+                        None => list_builder.append(false),
                     }
                 }
-                _ => list_builder.append(false)?,
+                _ => list_builder.append(false),
             }
             Ok(())
         })
@@ -103,7 +103,7 @@ mod tests {
     use crate::array::{ListArray, StringArray};
 
     #[test]
-    fn match_single_group() -> Result<()> {
+    fn match_single_group() {
         let values = vec![
             Some("abc-005-def"),
             Some("X-7-5"),
@@ -117,41 +117,39 @@ mod tests {
         pattern_values.push(r"(bar)(bequ1e)");
         pattern_values.push("");
         let pattern = StringArray::from(pattern_values);
-        let actual = regexp_match(&array, &pattern, None)?;
+        let actual = regexp_match(&array, &pattern, None).unwrap();
         let elem_builder: GenericStringBuilder<i32> = 
GenericStringBuilder::new(0);
         let mut expected_builder = ListBuilder::new(elem_builder);
-        expected_builder.values().append_value("005")?;
-        expected_builder.append(true)?;
-        expected_builder.values().append_value("7")?;
-        expected_builder.append(true)?;
-        expected_builder.append(false)?;
-        expected_builder.append(false)?;
-        expected_builder.append(false)?;
-        expected_builder.values().append_value("")?;
-        expected_builder.append(true)?;
+        expected_builder.values().append_value("005");
+        expected_builder.append(true);
+        expected_builder.values().append_value("7");
+        expected_builder.append(true);
+        expected_builder.append(false);
+        expected_builder.append(false);
+        expected_builder.append(false);
+        expected_builder.values().append_value("");
+        expected_builder.append(true);
         let expected = expected_builder.finish();
         let result = actual.as_any().downcast_ref::<ListArray>().unwrap();
         assert_eq!(&expected, result);
-        Ok(())
     }
 
     #[test]
-    fn match_single_group_with_flags() -> Result<()> {
+    fn match_single_group_with_flags() {
         let values = vec![Some("abc-005-def"), Some("X-7-5"), Some("X545"), 
None];
         let array = StringArray::from(values);
         let pattern = StringArray::from(vec![r"x.*-(\d*)-.*"; 4]);
         let flags = StringArray::from(vec!["i"; 4]);
-        let actual = regexp_match(&array, &pattern, Some(&flags))?;
+        let actual = regexp_match(&array, &pattern, Some(&flags)).unwrap();
         let elem_builder: GenericStringBuilder<i32> = 
GenericStringBuilder::new(0);
         let mut expected_builder = ListBuilder::new(elem_builder);
-        expected_builder.append(false)?;
-        expected_builder.values().append_value("7")?;
-        expected_builder.append(true)?;
-        expected_builder.append(false)?;
-        expected_builder.append(false)?;
+        expected_builder.append(false);
+        expected_builder.values().append_value("7");
+        expected_builder.append(true);
+        expected_builder.append(false);
+        expected_builder.append(false);
         let expected = expected_builder.finish();
         let result = actual.as_any().downcast_ref::<ListArray>().unwrap();
         assert_eq!(&expected, result);
-        Ok(())
     }
 }
diff --git a/arrow/src/compute/kernels/take.rs 
b/arrow/src/compute/kernels/take.rs
index 1ff8c00a2..6c217a3d8 100644
--- a/arrow/src/compute/kernels/take.rs
+++ b/arrow/src/compute/kernels/take.rs
@@ -1077,14 +1077,12 @@ mod tests {
             struct_builder
                 .field_builder::<BooleanBuilder>(0)
                 .unwrap()
-                .append_option(value.and_then(|v| v.0))
-                .unwrap();
+                .append_option(value.and_then(|v| v.0));
             struct_builder
                 .field_builder::<Int32Builder>(1)
                 .unwrap()
-                .append_option(value.and_then(|v| v.1))
-                .unwrap();
-            struct_builder.append(value.is_some()).unwrap();
+                .append_option(value.and_then(|v| v.1));
+            struct_builder.append(value.is_some());
         }
         struct_builder.finish()
     }
@@ -2034,7 +2032,7 @@ mod tests {
         dict_builder.append("foo").unwrap();
         dict_builder.append("bar").unwrap();
         dict_builder.append("").unwrap();
-        dict_builder.append_null().unwrap();
+        dict_builder.append_null();
         dict_builder.append("foo").unwrap();
         dict_builder.append("bar").unwrap();
         dict_builder.append("bar").unwrap();
diff --git a/arrow/src/compute/kernels/temporal.rs 
b/arrow/src/compute/kernels/temporal.rs
index b5cbda140..d917a6ef3 100644
--- a/arrow/src/compute/kernels/temporal.rs
+++ b/arrow/src/compute/kernels/temporal.rs
@@ -31,11 +31,11 @@ macro_rules! extract_component_from_array {
     ($array:ident, $builder:ident, $extract_fn:ident, $using:ident) => {
         for i in 0..$array.len() {
             if $array.is_null(i) {
-                $builder.append_null()?;
+                $builder.append_null();
             } else {
                 match $array.$using(i) {
-                    Some(dt) => $builder.append_value(dt.$extract_fn() as 
i32)?,
-                    None => $builder.append_null()?,
+                    Some(dt) => $builder.append_value(dt.$extract_fn() as i32),
+                    None => $builder.append_null(),
                 }
             }
         }
@@ -43,13 +43,13 @@ macro_rules! extract_component_from_array {
     ($array:ident, $builder:ident, $extract_fn1:ident, $extract_fn2:ident, 
$using:ident) => {
         for i in 0..$array.len() {
             if $array.is_null(i) {
-                $builder.append_null()?;
+                $builder.append_null();
             } else {
                 match $array.$using(i) {
                     Some(dt) => {
-                        $builder.append_value(dt.$extract_fn1().$extract_fn2() 
as i32)?
+                        $builder.append_value(dt.$extract_fn1().$extract_fn2() 
as i32);
                     }
-                    None => $builder.append_null()?,
+                    None => $builder.append_null(),
                 }
             }
         }
@@ -72,7 +72,7 @@ macro_rules! extract_component_from_array {
 
             for i in 0..$array.len() {
                 if $array.is_null(i) {
-                    $builder.append_null()?;
+                    $builder.append_null();
                 } else {
                     match $array.value_as_datetime(i) {
                         Some(utc) => {
@@ -90,9 +90,9 @@ macro_rules! extract_component_from_array {
                             };
                             match $array.$using(i, fixed_offset) {
                                 Some(dt) => {
-                                    $builder.append_value(dt.$extract_fn() as 
i32)?
+                                    $builder.append_value(dt.$extract_fn() as 
i32);
                                 }
-                                None => $builder.append_null()?,
+                                None => $builder.append_null(),
                             }
                         }
                         err => return_compute_error_with!(
diff --git a/arrow/src/csv/reader.rs b/arrow/src/csv/reader.rs
index 95b23378e..d00bd729c 100644
--- a/arrow/src/csv/reader.rs
+++ b/arrow/src/csv/reader.rs
@@ -705,12 +705,12 @@ fn build_decimal_array(
         match col_s {
             None => {
                 // No data for this row
-                decimal_builder.append_null()?;
+                decimal_builder.append_null();
             }
             Some(s) => {
                 if s.is_empty() {
                     // append null
-                    decimal_builder.append_null()?;
+                    decimal_builder.append_null();
                 } else {
                     let decimal_value: Result<i128> =
                         parse_decimal_with_parameter(s, precision, scale);
diff --git a/arrow/src/json/reader.rs b/arrow/src/json/reader.rs
index 260d185da..9b348e629 100644
--- a/arrow/src/json/reader.rs
+++ b/arrow/src/json/reader.rs
@@ -803,7 +803,7 @@ impl Decoder {
             }
             DataType::Dictionary(_, _) => {
                 let values_builder =
-                    self.build_string_dictionary_builder::<DT>(rows.len() * 
5)?;
+                    self.build_string_dictionary_builder::<DT>(rows.len() * 5);
                 Box::new(ListBuilder::new(values_builder))
             }
             e => {
@@ -855,14 +855,14 @@ impl Decoder {
                             ))?;
                         for val in vals {
                             if let Some(v) = val {
-                                builder.values().append_value(&v)?
+                                builder.values().append_value(&v);
                             } else {
-                                builder.values().append_null()?
+                                builder.values().append_null();
                             };
                         }
 
                         // Append to the list
-                        builder.append(true)?;
+                        builder.append(true);
                     }
                     DataType::Dictionary(_, _) => {
                         let builder = 
builder.as_any_mut().downcast_mut::<ListBuilder<StringDictionaryBuilder<DT>>>().ok_or_else(||ArrowError::JsonError(
@@ -870,14 +870,14 @@ impl Decoder {
                         ))?;
                         for val in vals {
                             if let Some(v) = val {
-                                let _ = builder.values().append(&v)?;
+                                let _ = builder.values().append(&v);
                             } else {
-                                builder.values().append_null()?
+                                builder.values().append_null();
                             };
                         }
 
                         // Append to the list
-                        builder.append(true)?;
+                        builder.append(true);
                     }
                     e => {
                         return Err(ArrowError::JsonError(format!(
@@ -897,13 +897,13 @@ impl Decoder {
     fn build_string_dictionary_builder<T>(
         &self,
         row_len: usize,
-    ) -> Result<StringDictionaryBuilder<T>>
+    ) -> StringDictionaryBuilder<T>
     where
         T: ArrowPrimitiveType + ArrowDictionaryKeyType,
     {
         let key_builder = PrimitiveBuilder::<T>::new(row_len);
         let values_builder = StringBuilder::new(row_len * 5);
-        Ok(StringDictionaryBuilder::new(key_builder, values_builder))
+        StringDictionaryBuilder::new(key_builder, values_builder)
     }
 
     #[inline(always)]
@@ -954,12 +954,12 @@ impl Decoder {
         for row in rows {
             if let Some(value) = row.get(&col_name) {
                 if let Some(boolean) = value.as_bool() {
-                    builder.append_value(boolean)?
+                    builder.append_value(boolean);
                 } else {
-                    builder.append_null()?;
+                    builder.append_null();
                 }
             } else {
-                builder.append_null()?;
+                builder.append_null();
             }
         }
         Ok(Arc::new(builder.finish()))
@@ -1479,16 +1479,16 @@ impl Decoder {
         T: ArrowPrimitiveType + ArrowDictionaryKeyType,
     {
         let mut builder: StringDictionaryBuilder<T> =
-            self.build_string_dictionary_builder(rows.len())?;
+            self.build_string_dictionary_builder(rows.len());
         for row in rows {
             if let Some(value) = row.get(&col_name) {
                 if let Some(str_v) = value.as_str() {
                     builder.append(str_v).map(drop)?
                 } else {
-                    builder.append_null()?
+                    builder.append_null();
                 }
             } else {
-                builder.append_null()?
+                builder.append_null();
             }
         }
         Ok(Arc::new(builder.finish()) as ArrayRef)
diff --git a/arrow/src/util/pretty.rs b/arrow/src/util/pretty.rs
index 6622593df..e92b0366a 100644
--- a/arrow/src/util/pretty.rs
+++ b/arrow/src/util/pretty.rs
@@ -247,7 +247,7 @@ mod tests {
         let mut builder = StringDictionaryBuilder::new(keys_builder, 
values_builder);
 
         builder.append("one")?;
-        builder.append_null()?;
+        builder.append_null();
         builder.append("three")?;
         let array = Arc::new(builder.finish());
 
@@ -284,12 +284,12 @@ mod tests {
         let keys_builder = Int32Array::builder(3);
         let mut builder = FixedSizeListBuilder::new(keys_builder, 3);
 
-        builder.values().append_slice(&[1, 2, 3]).unwrap();
-        builder.append(true).unwrap();
-        builder.values().append_slice(&[4, 5, 6]).unwrap();
-        builder.append(false).unwrap();
-        builder.values().append_slice(&[7, 8, 9]).unwrap();
-        builder.append(true).unwrap();
+        builder.values().append_slice(&[1, 2, 3]);
+        builder.append(true);
+        builder.values().append_slice(&[4, 5, 6]);
+        builder.append(false);
+        builder.values().append_slice(&[7, 8, 9]);
+        builder.append(true);
 
         let array = Arc::new(builder.finish());
 
@@ -321,7 +321,7 @@ mod tests {
         let mut builder = FixedSizeBinaryBuilder::new(3, 3);
 
         builder.append_value(&[1, 2, 3]).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(&[7, 8, 9]).unwrap();
 
         let array = Arc::new(builder.finish());
@@ -351,8 +351,8 @@ mod tests {
     macro_rules! check_datetime {
         ($ARRAYTYPE:ident, $VALUE:expr, $EXPECTED_RESULT:expr) => {
             let mut builder = $ARRAYTYPE::builder(10);
-            builder.append_value($VALUE).unwrap();
-            builder.append_null().unwrap();
+            builder.append_value($VALUE);
+            builder.append_null();
             let array = builder.finish();
 
             let schema = Arc::new(Schema::new(vec![Field::new(
diff --git a/integration-testing/src/lib.rs b/integration-testing/src/lib.rs
index 32ea6339e..c9ba98fe6 100644
--- a/integration-testing/src/lib.rs
+++ b/integration-testing/src/lib.rs
@@ -121,7 +121,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_bool().unwrap()),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -142,7 +142,7 @@ fn array_from_json(
                         ))
                     })? as i8),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -158,7 +158,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_i64().unwrap() as i16),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -177,7 +177,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_i64().unwrap() as i32),
                     _ => b.append_null(),
-                }?;
+                };
             }
             let array = Arc::new(b.finish()) as ArrayRef;
             arrow::compute::cast(&array, field.data_type())
@@ -238,7 +238,7 @@ fn array_from_json(
                         _ => panic!("Unable to parse {:?} as number", value),
                     }),
                     _ => b.append_null(),
-                }?;
+                };
             }
             let array = Arc::new(b.finish()) as ArrayRef;
             arrow::compute::cast(&array, field.data_type())
@@ -255,7 +255,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_u64().unwrap() as u8),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -271,7 +271,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_u64().unwrap() as u16),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -287,7 +287,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_u64().unwrap() as u32),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -309,7 +309,7 @@ fn array_from_json(
                             .expect("Unable to parse string as u64"),
                     ),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -352,7 +352,7 @@ fn array_from_json(
                         _ => panic!("Unable to parse {:?} as MonthDayNano", 
value),
                     }),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -368,7 +368,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_f64().unwrap() as f32),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -384,7 +384,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_f64().unwrap()),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -403,7 +403,7 @@ fn array_from_json(
                         b.append_value(&v)
                     }
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -422,7 +422,7 @@ fn array_from_json(
                         b.append_value(&v)
                     }
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -438,7 +438,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_str().unwrap()),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -454,7 +454,7 @@ fn array_from_json(
                 match is_valid {
                     1 => b.append_value(value.as_str().unwrap()),
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -470,10 +470,10 @@ fn array_from_json(
                 match is_valid {
                     1 => {
                         let v = hex::decode(value.as_str().unwrap()).unwrap();
-                        b.append_value(&v)
+                        b.append_value(&v)?
                     }
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
@@ -605,9 +605,11 @@ fn array_from_json(
                 .zip(json_col.data.unwrap())
             {
                 match is_valid {
-                    1 => 
b.append_value(value.as_str().unwrap().parse::<i128>().unwrap()),
+                    1 => {
+                        
b.append_value(value.as_str().unwrap().parse::<i128>().unwrap())?
+                    }
                     _ => b.append_null(),
-                }?;
+                };
             }
             Ok(Arc::new(b.finish()))
         }
diff --git a/parquet/src/arrow/arrow_reader.rs 
b/parquet/src/arrow/arrow_reader.rs
index fb4489def..770477b02 100644
--- a/parquet/src/arrow/arrow_reader.rs
+++ b/parquet/src/arrow/arrow_reader.rs
@@ -1551,7 +1551,7 @@ mod tests {
         for _ in 0..2 {
             let mut list_builder = 
ListBuilder::new(Int32Builder::new(batch_size));
             for _ in 0..(batch_size) {
-                list_builder.append(true).unwrap();
+                list_builder.append(true);
             }
             let batch = RecordBatch::try_new(
                 schema.clone(),
diff --git a/parquet/src/arrow/arrow_writer/levels.rs 
b/parquet/src/arrow/arrow_writer/levels.rs
index 51e494d41..f88d986ea 100644
--- a/parquet/src/arrow/arrow_writer/levels.rs
+++ b/parquet/src/arrow/arrow_writer/levels.rs
@@ -1200,52 +1200,47 @@ mod tests {
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_value(1)
-            .unwrap();
-        values.append(true).unwrap();
-        list_builder.append(true).unwrap();
+            .append_value(1);
+        values.append(true);
+        list_builder.append(true);
 
         // []
-        list_builder.append(true).unwrap();
+        list_builder.append(true);
 
         // null
-        list_builder.append(false).unwrap();
+        list_builder.append(false);
 
         // [null, null]
         let values = list_builder.values();
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_null()
-            .unwrap();
-        values.append(false).unwrap();
+            .append_null();
+        values.append(false);
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_null()
-            .unwrap();
-        values.append(false).unwrap();
-        list_builder.append(true).unwrap();
+            .append_null();
+        values.append(false);
+        list_builder.append(true);
 
         // [{a: null}]
         let values = list_builder.values();
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_null()
-            .unwrap();
-        values.append(true).unwrap();
-        list_builder.append(true).unwrap();
+            .append_null();
+        values.append(true);
+        list_builder.append(true);
 
         // [{a: 2}]
         let values = list_builder.values();
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_value(2)
-            .unwrap();
-        values.append(true).unwrap();
-        list_builder.append(true).unwrap();
+            .append_value(2);
+        values.append(true);
+        list_builder.append(true);
 
         let array = Arc::new(list_builder.finish());
 
diff --git a/parquet/src/arrow/arrow_writer/mod.rs 
b/parquet/src/arrow/arrow_writer/mod.rs
index 70ddf60f4..75bd6f6aa 100644
--- a/parquet/src/arrow/arrow_writer/mod.rs
+++ b/parquet/src/arrow/arrow_writer/mod.rs
@@ -1517,7 +1517,7 @@ mod tests {
     fn fixed_size_binary_single_column() {
         let mut builder = FixedSizeBinaryBuilder::new(16, 4);
         builder.append_value(b"0123").unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append_value(b"8910").unwrap();
         builder.append_value(b"1112").unwrap();
         let array = Arc::new(builder.finish());
@@ -1697,7 +1697,7 @@ mod tests {
         let value_builder = PrimitiveBuilder::<UInt32Type>::new(2);
         let mut builder = PrimitiveDictionaryBuilder::new(key_builder, 
value_builder);
         builder.append(12345678).unwrap();
-        builder.append_null().unwrap();
+        builder.append_null();
         builder.append(22345678).unwrap();
         builder.append(12345678).unwrap();
         let d = builder.finish();
@@ -1833,77 +1833,67 @@ mod tests {
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_value(1)
-            .unwrap();
+            .append_value(1);
         values
             .field_builder::<Int32Builder>(1)
             .unwrap()
-            .append_value(2)
-            .unwrap();
-        values.append(true).unwrap();
-        list_builder.append(true).unwrap();
+            .append_value(2);
+        values.append(true);
+        list_builder.append(true);
 
         // []
-        list_builder.append(true).unwrap();
+        list_builder.append(true);
 
         // null
-        list_builder.append(false).unwrap();
+        list_builder.append(false);
 
         // [null, null]
         let values = list_builder.values();
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_null()
-            .unwrap();
+            .append_null();
         values
             .field_builder::<Int32Builder>(1)
             .unwrap()
-            .append_null()
-            .unwrap();
-        values.append(false).unwrap();
+            .append_null();
+        values.append(false);
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_null()
-            .unwrap();
+            .append_null();
         values
             .field_builder::<Int32Builder>(1)
             .unwrap()
-            .append_null()
-            .unwrap();
-        values.append(false).unwrap();
-        list_builder.append(true).unwrap();
+            .append_null();
+        values.append(false);
+        list_builder.append(true);
 
         // [{a: null, b: 3}]
         let values = list_builder.values();
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_null()
-            .unwrap();
+            .append_null();
         values
             .field_builder::<Int32Builder>(1)
             .unwrap()
-            .append_value(3)
-            .unwrap();
-        values.append(true).unwrap();
-        list_builder.append(true).unwrap();
+            .append_value(3);
+        values.append(true);
+        list_builder.append(true);
 
         // [{a: 2, b: null}]
         let values = list_builder.values();
         values
             .field_builder::<Int32Builder>(0)
             .unwrap()
-            .append_value(2)
-            .unwrap();
+            .append_value(2);
         values
             .field_builder::<Int32Builder>(1)
             .unwrap()
-            .append_null()
-            .unwrap();
-        values.append(true).unwrap();
-        list_builder.append(true).unwrap();
+            .append_null();
+        values.append(true);
+        list_builder.append(true);
 
         let array = Arc::new(list_builder.finish());
 
diff --git a/parquet/src/arrow/buffer/converter.rs 
b/parquet/src/arrow/buffer/converter.rs
index 14063d716..a841509e7 100644
--- a/parquet/src/arrow/buffer/converter.rs
+++ b/parquet/src/arrow/buffer/converter.rs
@@ -58,9 +58,9 @@ impl Converter<Vec<Option<FixedLenByteArray>>, 
FixedSizeBinaryArray>
         let mut builder = FixedSizeBinaryBuilder::new(source.len(), 
self.byte_width);
         for v in source {
             match v {
-                Some(array) => builder.append_value(array.data()),
+                Some(array) => builder.append_value(array.data())?,
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())
@@ -119,7 +119,7 @@ impl Converter<Vec<Option<FixedLenByteArray>>, 
IntervalYearMonthArray>
                     array.data()[0..4].try_into().unwrap(),
                 )),
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())
@@ -144,7 +144,7 @@ impl Converter<Vec<Option<FixedLenByteArray>>, 
IntervalDayTimeArray>
                     array.data()[4..12].try_into().unwrap(),
                 )),
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())
@@ -181,7 +181,7 @@ impl Converter<Vec<Option<ByteArray>>, StringArray> for 
Utf8ArrayConverter {
             match v {
                 Some(array) => builder.append_value(array.as_utf8()?),
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())
@@ -202,7 +202,7 @@ impl Converter<Vec<Option<ByteArray>>, LargeStringArray> 
for LargeUtf8ArrayConve
             match v {
                 Some(array) => builder.append_value(array.as_utf8()?),
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())
@@ -218,7 +218,7 @@ impl Converter<Vec<Option<ByteArray>>, BinaryArray> for 
BinaryArrayConverter {
             match v {
                 Some(array) => builder.append_value(array.data()),
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())
@@ -234,7 +234,7 @@ impl Converter<Vec<Option<ByteArray>>, LargeBinaryArray> 
for LargeBinaryArrayCon
             match v {
                 Some(array) => builder.append_value(array.data()),
                 None => builder.append_null(),
-            }?
+            }
         }
 
         Ok(builder.finish())

Reply via email to