From b7491c924797418473ef6d9a5f0daca69821ff7a Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 29 Jan 2026 14:56:13 -0500 Subject: [PATCH 1/4] Introduce PrimitiveArrayBuilder::build(), avoid use of ArrayData --- arrow-array/src/array/primitive_array.rs | 16 ++++++ arrow-array/src/builder/primitive_builder.rs | 57 ++++++++++++++------ 2 files changed, 57 insertions(+), 16 deletions(-) diff --git a/arrow-array/src/array/primitive_array.rs b/arrow-array/src/array/primitive_array.rs index 29189b450a40..abef806bddc0 100644 --- a/arrow-array/src/array/primitive_array.rs +++ b/arrow-array/src/array/primitive_array.rs @@ -638,6 +638,22 @@ impl PrimitiveArray { Self::try_new(values, nulls).unwrap() } + /// Create a [`PrimitiveArray`] from the provided data type, values and nulls + /// + /// panic's if the type is not compatible + pub(crate) fn new_with_datatype( + data_type: DataType, + values: ScalarBuffer, + nulls: Option, + ) -> Self { + Self::assert_compatible(&data_type); + Self { + data_type, + values, + nulls, + } + } + /// Create a new [`PrimitiveArray`] of the given length where all values are null pub fn new_null(length: usize) -> Self { Self { diff --git a/arrow-array/src/builder/primitive_builder.rs b/arrow-array/src/builder/primitive_builder.rs index 049cef241c83..efd1dd642416 100644 --- a/arrow-array/src/builder/primitive_builder.rs +++ b/arrow-array/src/builder/primitive_builder.rs @@ -19,7 +19,6 @@ use crate::builder::ArrayBuilder; use crate::types::*; use crate::{Array, ArrayRef, PrimitiveArray}; use arrow_buffer::{Buffer, MutableBuffer, NullBufferBuilder, ScalarBuffer}; -use arrow_data::ArrayData; use arrow_schema::{ArrowError, DataType}; use std::any::Any; use std::sync::Arc; @@ -300,30 +299,56 @@ impl PrimitiveBuilder { } /// Builds the [`PrimitiveArray`] and reset this builder. + /// + /// See [`Self::build`] to consume the builder, instead of resetting it. pub fn finish(&mut self) -> PrimitiveArray { - let len = self.len(); + let values_buffer = Buffer::from(std::mem::take(&mut self.values_builder)); let nulls = self.null_buffer_builder.finish(); - let builder = ArrayData::builder(self.data_type.clone()) - .len(len) - .add_buffer(std::mem::take(&mut self.values_builder).into()) - .nulls(nulls); - - let array_data = unsafe { builder.build_unchecked() }; - PrimitiveArray::::from(array_data) + PrimitiveArray::::new_with_datatype( + self.data_type.clone(), + ScalarBuffer::from(values_buffer), + nulls, + ) } /// Builds the [`PrimitiveArray`] without resetting the builder. pub fn finish_cloned(&self) -> PrimitiveArray { - let len = self.len(); let nulls = self.null_buffer_builder.finish_cloned(); let values_buffer = Buffer::from_slice_ref(self.values_builder.as_slice()); - let builder = ArrayData::builder(self.data_type.clone()) - .len(len) - .add_buffer(values_buffer) - .nulls(nulls); + PrimitiveArray::::new_with_datatype( + self.data_type.clone(), + ScalarBuffer::from(values_buffer), + nulls, + ) + } - let array_data = unsafe { builder.build_unchecked() }; - PrimitiveArray::::from(array_data) + /// Builds the [`PrimitiveArray`] , consuming this builder. + /// + /// Use [`Self::finish`] to reuse the builder + /// + /// # Example: + /// + /// ``` + /// # use arrow_array::builder::UInt8Builder; + /// use arrow_array::UInt8Array; + /// let mut builder = UInt8Builder::with_capacity(5); + /// builder.append_slice(&[42, 44, 46]); + /// builder.append_nulls(2); + /// let array = builder.build(); + /// assert_eq!(UInt8Array::from(vec![Some(42), Some(44), Some(46), None, None]), array); + /// ``` + #[inline] + pub fn build(self) -> PrimitiveArray { + let Self { + values_builder, + null_buffer_builder, + data_type, + } = self; + PrimitiveArray::new_with_datatype( + data_type, // reuse data_type to save a DataType::drop() + ScalarBuffer::from(values_builder), + null_buffer_builder.build(), + ) } /// Returns the current values buffer as a slice From f5b03915bec9604dadd9dd7b2c8d9f3a1ddbb97d Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 30 Jan 2026 09:05:19 -0500 Subject: [PATCH 2/4] Avoid checking DataType when unecessary --- arrow-array/src/array/primitive_array.rs | 16 ---- arrow-array/src/builder/primitive_builder.rs | 89 ++++++++++++-------- 2 files changed, 53 insertions(+), 52 deletions(-) diff --git a/arrow-array/src/array/primitive_array.rs b/arrow-array/src/array/primitive_array.rs index abef806bddc0..29189b450a40 100644 --- a/arrow-array/src/array/primitive_array.rs +++ b/arrow-array/src/array/primitive_array.rs @@ -638,22 +638,6 @@ impl PrimitiveArray { Self::try_new(values, nulls).unwrap() } - /// Create a [`PrimitiveArray`] from the provided data type, values and nulls - /// - /// panic's if the type is not compatible - pub(crate) fn new_with_datatype( - data_type: DataType, - values: ScalarBuffer, - nulls: Option, - ) -> Self { - Self::assert_compatible(&data_type); - Self { - data_type, - values, - nulls, - } - } - /// Create a new [`PrimitiveArray`] of the given length where all values are null pub fn new_null(length: usize) -> Self { Self { diff --git a/arrow-array/src/builder/primitive_builder.rs b/arrow-array/src/builder/primitive_builder.rs index efd1dd642416..0707212901cd 100644 --- a/arrow-array/src/builder/primitive_builder.rs +++ b/arrow-array/src/builder/primitive_builder.rs @@ -99,7 +99,8 @@ pub type Decimal256Builder = PrimitiveBuilder; pub struct PrimitiveBuilder { values_builder: Vec, null_buffer_builder: NullBufferBuilder, - data_type: DataType, + /// Optional data type override (e.g. to add timezone or precision/scale) + data_type: Option, } impl ArrayBuilder for PrimitiveBuilder { @@ -151,7 +152,7 @@ impl PrimitiveBuilder { Self { values_builder: Vec::with_capacity(capacity), null_buffer_builder: NullBufferBuilder::new(capacity), - data_type: T::DATA_TYPE, + data_type: None, } } @@ -169,7 +170,7 @@ impl PrimitiveBuilder { Self { values_builder, null_buffer_builder, - data_type: T::DATA_TYPE, + data_type: None, } } @@ -182,15 +183,14 @@ impl PrimitiveBuilder { /// /// # Panics /// - /// This method panics if `data_type` is not [PrimitiveArray::is_compatible] + /// This method will not panic, but [`Self::build`], [`Self::finish`] will panics if `data_type` is + /// not [PrimitiveArray::is_compatible] with the builder's primitive type + /// `T`. pub fn with_data_type(self, data_type: DataType) -> Self { - assert!( - PrimitiveArray::::is_compatible(&data_type), - "incompatible data type for builder, expected {} got {}", - T::DATA_TYPE, - data_type - ); - Self { data_type, ..self } + Self { + data_type: Some(data_type), + ..self + } } /// Returns the capacity of this builder measured in slots of type `T` @@ -267,11 +267,11 @@ impl PrimitiveBuilder { /// Panics if `array` and `self` data types are different #[inline] pub fn append_array(&mut self, array: &PrimitiveArray) { - assert_eq!( - &self.data_type, - array.data_type(), - "array data type mismatch" - ); + if let Some(data_type) = &self.data_type { + assert_eq!(data_type, array.data_type(), "array data type mismatch"); + } else { + assert_eq!(&T::DATA_TYPE, array.data_type(), "array data type mismatch") + } self.values_builder.extend_from_slice(array.values()); if let Some(null_buffer) = array.nulls() { @@ -304,22 +304,22 @@ impl PrimitiveBuilder { pub fn finish(&mut self) -> PrimitiveArray { let values_buffer = Buffer::from(std::mem::take(&mut self.values_builder)); let nulls = self.null_buffer_builder.finish(); - PrimitiveArray::::new_with_datatype( - self.data_type.clone(), - ScalarBuffer::from(values_buffer), - nulls, - ) + let mut new_array = PrimitiveArray::::new(ScalarBuffer::from(values_buffer), nulls); + if let Some(data_type) = &self.data_type { + new_array = new_array.with_data_type(data_type.clone()) + } + new_array } /// Builds the [`PrimitiveArray`] without resetting the builder. pub fn finish_cloned(&self) -> PrimitiveArray { let nulls = self.null_buffer_builder.finish_cloned(); let values_buffer = Buffer::from_slice_ref(self.values_builder.as_slice()); - PrimitiveArray::::new_with_datatype( - self.data_type.clone(), - ScalarBuffer::from(values_buffer), - nulls, - ) + let mut new_array = PrimitiveArray::::new(ScalarBuffer::from(values_buffer), nulls); + if let Some(data_type) = &self.data_type { + new_array = new_array.with_data_type(data_type.clone()) + } + new_array } /// Builds the [`PrimitiveArray`] , consuming this builder. @@ -344,11 +344,14 @@ impl PrimitiveBuilder { null_buffer_builder, data_type, } = self; - PrimitiveArray::new_with_datatype( - data_type, // reuse data_type to save a DataType::drop() - ScalarBuffer::from(values_builder), - null_buffer_builder.build(), - ) + + let nulls = null_buffer_builder.build(); + let values_buffer = ScalarBuffer::from(Buffer::from(values_builder)); + let mut new_array = PrimitiveArray::::new(values_buffer, nulls); + if let Some(data_type) = data_type { + new_array = new_array.with_data_type(data_type) + } + new_array } /// Returns the current values buffer as a slice @@ -385,7 +388,7 @@ impl PrimitiveBuilder

{ pub fn with_precision_and_scale(self, precision: u8, scale: i8) -> Result { validate_decimal_precision_and_scale::

(precision, scale)?; Ok(Self { - data_type: P::TYPE_CONSTRUCTOR(precision, scale), + data_type: Some(P::TYPE_CONSTRUCTOR(precision, scale)), ..self }) } @@ -400,7 +403,7 @@ impl PrimitiveBuilder

{ /// Sets an optional timezone pub fn with_timezone_opt>>(self, timezone: Option) -> Self { Self { - data_type: DataType::Timestamp(P::UNIT, timezone.map(Into::into)), + data_type: Some(DataType::Timestamp(P::UNIT, timezone.map(Into::into))), ..self } } @@ -655,9 +658,23 @@ mod tests { } #[test] - #[should_panic(expected = "incompatible data type for builder, expected Int32 got Int64")] - fn test_invalid_with_data_type() { - Int32Builder::new().with_data_type(DataType::Int64); + #[should_panic(expected = "PrimitiveArray expected data type Int32 got Int64")] + fn test_invalid_with_data_type_finish() { + Int32Builder::new().with_data_type(DataType::Int64).finish(); + } + + #[test] + #[should_panic(expected = "PrimitiveArray expected data type Int32 got Int64")] + fn test_invalid_with_data_type_finish_cloned() { + Int32Builder::new() + .with_data_type(DataType::Int64) + .finish_cloned(); + } + + #[test] + #[should_panic(expected = "PrimitiveArray expected data type Int32 got Int64")] + fn test_invalid_with_data_type_build() { + Int32Builder::new().with_data_type(DataType::Int64).build(); } #[test] From 68951064e7e4208d4168ad41b5536394d63144a4 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 29 Jan 2026 15:12:20 -0500 Subject: [PATCH 3/4] Update references to use build --- arrow-arith/src/arity.rs | 6 ++-- arrow-array/benches/decimal_overflow.rs | 4 +-- arrow-array/src/array/dictionary_array.rs | 8 ++--- arrow-array/src/array/primitive_array.rs | 18 +++++----- arrow-array/src/builder/buffer_builder.rs | 2 +- .../fixed_size_binary_dictionary_builder.rs | 6 ++-- .../generic_bytes_dictionary_builder.rs | 8 ++--- arrow-array/src/builder/primitive_builder.rs | 28 +++++++-------- .../builder/primitive_dictionary_builder.rs | 10 +++--- .../src/builder/primitive_run_builder.rs | 4 +-- arrow-cast/src/cast/decimal.rs | 2 +- arrow-cast/src/cast/mod.rs | 2 +- arrow-cast/src/cast/run_array.rs | 4 +-- arrow-cast/src/pretty.rs | 2 +- arrow-csv/src/reader/mod.rs | 2 +- arrow-csv/src/writer.rs | 8 ++--- arrow-flight/src/sql/metadata/sql_info.rs | 18 +++++----- arrow-flight/src/sql/metadata/xdbc_info.rs | 20 +++++------ arrow-integration-test/src/lib.rs | 34 +++++++++---------- arrow-ipc/benches/ipc_reader.rs | 6 ++-- arrow-ipc/benches/ipc_writer.rs | 6 ++-- arrow-json/src/reader/decimal_array.rs | 2 +- arrow-json/src/reader/primitive_array.rs | 2 +- arrow-select/src/concat.rs | 2 +- arrow-select/src/interleave.rs | 2 +- arrow-select/src/take.rs | 4 +-- arrow/benches/builder.rs | 12 +++---- arrow/benches/cast_kernels.rs | 8 ++--- arrow/benches/decimal_validate.rs | 8 ++--- arrow/benches/primitive_run_take.rs | 2 +- arrow/benches/take_kernels.rs | 2 +- arrow/examples/builders.rs | 2 +- arrow/tests/array_validation.rs | 2 +- .../src/variant_to_arrow.rs | 4 +-- parquet/src/arrow/arrow_reader/statistics.rs | 2 +- 35 files changed, 126 insertions(+), 126 deletions(-) diff --git a/arrow-arith/src/arity.rs b/arrow-arith/src/arity.rs index b9f7a82963c7..d6849f4b6f7f 100644 --- a/arrow-arith/src/arity.rs +++ b/arrow-arith/src/arity.rs @@ -228,7 +228,7 @@ where .zip(b.values()) .for_each(|(l, r)| *l = op(*l, *r)); - let array = builder.finish(); + let array = builder.build(); // The builder has the null buffer from `a`, it is not changed. let nulls = NullBuffer::union(array.logical_nulls().as_ref(), b.logical_nulls().as_ref()); @@ -345,7 +345,7 @@ where if let Err(err) = r { return Ok(Err(err)); } - let array_builder = builder.finish().into_data().into_builder(); + let array_builder = builder.build().into_data().into_builder(); let array_data = unsafe { array_builder.nulls(Some(nulls)).build_unchecked() }; Ok(Ok(PrimitiveArray::::from(array_data))) } @@ -411,7 +411,7 @@ where }; }; } - Ok(Ok(builder.finish())) + Ok(Ok(builder.build())) } #[cfg(test)] diff --git a/arrow-array/benches/decimal_overflow.rs b/arrow-array/benches/decimal_overflow.rs index f9438b76de07..46d88e6ee968 100644 --- a/arrow-array/benches/decimal_overflow.rs +++ b/arrow-array/benches/decimal_overflow.rs @@ -33,8 +33,8 @@ fn criterion_benchmark(c: &mut Criterion) { builder_256.append_value(i256::from_i128(i as i128)); } } - let array_128 = builder_128.finish(); - let array_256 = builder_256.finish(); + let array_128 = builder_128.build(); + let array_256 = builder_256.build(); c.bench_function("validate_decimal_precision_128", |b| { b.iter(|| hint::black_box(array_128.validate_decimal_precision(8))); diff --git a/arrow-array/src/array/dictionary_array.rs b/arrow-array/src/array/dictionary_array.rs index 54f8c42dd84b..e2156accccfe 100644 --- a/arrow-array/src/array/dictionary_array.rs +++ b/arrow-array/src/array/dictionary_array.rs @@ -507,11 +507,11 @@ impl DictionaryArray { (Ok(key_builder), Ok(value_builder)) => Ok(unsafe { PrimitiveDictionaryBuilder::new_from_builders(key_builder, value_builder) }), - (Err(key_array), Ok(mut value_builder)) => { - Err(Self::try_new(key_array, Arc::new(value_builder.finish())).unwrap()) + (Err(key_array), Ok(value_builder)) => { + Err(Self::try_new(key_array, Arc::new(value_builder.build())).unwrap()) } - (Ok(mut key_builder), Err(value_array)) => { - Err(Self::try_new(key_builder.finish(), Arc::new(value_array)).unwrap()) + (Ok(key_builder), Err(value_array)) => { + Err(Self::try_new(key_builder.build(), Arc::new(value_array)).unwrap()) } (Err(key_array), Err(value_array)) => { Err(Self::try_new(key_array, Arc::new(value_array)).unwrap()) diff --git a/arrow-array/src/array/primitive_array.rs b/arrow-array/src/array/primitive_array.rs index 29189b450a40..ac8074563419 100644 --- a/arrow-array/src/array/primitive_array.rs +++ b/arrow-array/src/array/primitive_array.rs @@ -957,7 +957,7 @@ impl PrimitiveArray { .values_slice_mut() .iter_mut() .for_each(|v| *v = op(*v)); - Ok(builder.finish()) + Ok(builder.build()) } /// Applies a unary fallible function to all valid values in a primitive @@ -1033,7 +1033,7 @@ impl PrimitiveArray { return Ok(Err(err)); } - Ok(Ok(builder.finish())) + Ok(Ok(builder.build())) } /// Applies a unary and nullable function to all valid values in a primitive array @@ -2105,7 +2105,7 @@ mod tests { builder.append_slice(&[0, 1]); builder.append_null(); builder.append_slice(&[3, 4]); - let arr = builder.finish(); + let arr = builder.build(); assert_eq!( "PrimitiveArray\n[\n 0,\n 1,\n null,\n 3,\n 4,\n]", format!("{arr:?}") @@ -2451,7 +2451,7 @@ mod tests { let mut decimal_builder = Decimal128Builder::with_capacity(10); decimal_builder.append_value(123456); decimal_builder.append_value(12345); - let result = decimal_builder.finish().with_precision_and_scale(5, 3); + let result = decimal_builder.build().with_precision_and_scale(5, 3); assert!(result.is_ok()); let arr = result.unwrap(); assert_eq!("12.345", arr.value_as_string(1)); @@ -2469,7 +2469,7 @@ mod tests { decimal_builder.append_value(99); decimal_builder.append_value(-100); decimal_builder.append_value(-99); - let result = decimal_builder.finish().with_precision_and_scale(2, 1); + let result = decimal_builder.build().with_precision_and_scale(2, 1); assert!(result.is_ok()); let arr = result.unwrap(); assert_eq!("9.9", arr.value_as_string(1)); @@ -2626,7 +2626,7 @@ mod tests { let decimal2 = i256::from_i128(56789); builder.append_value(decimal2); - let array: Decimal256Array = builder.finish().with_precision_and_scale(76, 6).unwrap(); + let array: Decimal256Array = builder.build().with_precision_and_scale(76, 6).unwrap(); let collected: Vec<_> = array.iter().collect(); assert_eq!(vec![Some(decimal1), None, Some(decimal2)], collected); @@ -2673,7 +2673,7 @@ mod tests { let decimal2 = 56789; builder.append_value(decimal2); - let array: Decimal64Array = builder.finish().with_precision_and_scale(18, 4).unwrap(); + let array: Decimal64Array = builder.build().with_precision_and_scale(18, 4).unwrap(); let collected: Vec<_> = array.iter().collect(); assert_eq!(vec![Some(decimal1), None, Some(decimal2)], collected); @@ -2707,7 +2707,7 @@ mod tests { let decimal2 = 56789; builder.append_value(decimal2); - let array: Decimal32Array = builder.finish().with_precision_and_scale(9, 2).unwrap(); + let array: Decimal32Array = builder.build().with_precision_and_scale(9, 2).unwrap(); let collected: Vec<_> = array.iter().collect(); assert_eq!(vec![Some(decimal1), None, Some(decimal2)], collected); @@ -2771,7 +2771,7 @@ mod tests { let expected: Int32Array = vec![Some(4), Some(2), Some(1)].into_iter().collect(); - let new_array = builder.finish(); + let new_array = builder.build(); assert_eq!(expected, new_array); } diff --git a/arrow-array/src/builder/buffer_builder.rs b/arrow-array/src/builder/buffer_builder.rs index d183aae86551..1e492cef6000 100644 --- a/arrow-array/src/builder/buffer_builder.rs +++ b/arrow-array/src/builder/buffer_builder.rs @@ -219,7 +219,7 @@ mod tests { a.append_values(values, is_valid); assert_eq!(a.len(), 7); - let array = a.finish(); + let array = a.build(); assert_eq!(array.value(0), 1); assert!(array.is_null(1)); assert_eq!(array.value(2), -2); diff --git a/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs b/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs index fa3066b7e11e..c435dda02533 100644 --- a/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs +++ b/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs @@ -128,7 +128,7 @@ where /// assert_eq!(keys, &UInt16Array::from_iter(0..256)); /// ``` pub fn try_new_from_builder( - mut source: FixedSizeBinaryDictionaryBuilder, + source: FixedSizeBinaryDictionaryBuilder, ) -> Result where K::Native: NumCast, @@ -140,7 +140,7 @@ where let values_builder = source.values_builder; let byte_width = source.byte_width; - let source_keys = source.keys_builder.finish(); + let source_keys = source.keys_builder.build(); let new_keys: PrimitiveArray = source_keys.try_unary(|value| { num_traits::cast::cast::(value).ok_or_else(|| { ArrowError::CastError(format!( @@ -561,7 +561,7 @@ mod tests { .append_value(<::Native as From>::from(1u8)); expected_keys_builder .append_value(<::Native as From>::from(2u8)); - let expected_keys = expected_keys_builder.finish(); + let expected_keys = expected_keys_builder.build(); assert_eq!(array.keys(), &expected_keys); let av = array.values(); diff --git a/arrow-array/src/builder/generic_bytes_dictionary_builder.rs b/arrow-array/src/builder/generic_bytes_dictionary_builder.rs index 35c7bfced1fd..93314d00f746 100644 --- a/arrow-array/src/builder/generic_bytes_dictionary_builder.rs +++ b/arrow-array/src/builder/generic_bytes_dictionary_builder.rs @@ -184,7 +184,7 @@ where /// assert_eq!(keys, &UInt16Array::from_iter(0..256)); /// ``` pub fn try_new_from_builder( - mut source: GenericByteDictionaryBuilder, + source: GenericByteDictionaryBuilder, ) -> Result where K::Native: NumCast, @@ -195,7 +195,7 @@ where let dedup = source.dedup; let values_builder = source.values_builder; - let source_keys = source.keys_builder.finish(); + let source_keys = source.keys_builder.build(); let new_keys: PrimitiveArray = source_keys.try_unary(|value| { num_traits::cast::cast::(value).ok_or_else(|| { ArrowError::CastError(format!( @@ -741,7 +741,7 @@ mod tests { expected_keys_builder.append_null(); expected_keys_builder .append_value(<::Native as From>::from(2u8)); - let expected_keys = expected_keys_builder.finish(); + let expected_keys = expected_keys_builder.build(); assert_eq!(array.keys(), &expected_keys); let av = array.values(); @@ -975,7 +975,7 @@ mod tests { keys_builder.append_value(1); let values = values_builder.finish(); - let keys = keys_builder.finish(); + let keys = keys_builder.build(); let data_type = DataType::Dictionary( Box::new(Int32Type::DATA_TYPE), diff --git a/arrow-array/src/builder/primitive_builder.rs b/arrow-array/src/builder/primitive_builder.rs index 0707212901cd..429feb7c8f0f 100644 --- a/arrow-array/src/builder/primitive_builder.rs +++ b/arrow-array/src/builder/primitive_builder.rs @@ -436,7 +436,7 @@ mod tests { for i in 0..5 { builder.append_value(i); } - let arr = builder.finish(); + let arr = builder.build(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -451,7 +451,7 @@ mod tests { fn test_primitive_array_builder_i32_append_iter() { let mut builder = Int32Array::builder(5); unsafe { builder.append_trusted_len_iter(0..5) }; - let arr = builder.finish(); + let arr = builder.build(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -466,7 +466,7 @@ mod tests { fn test_primitive_array_builder_i32_append_nulls() { let mut builder = Int32Array::builder(5); builder.append_nulls(5); - let arr = builder.finish(); + let arr = builder.build(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(5, arr.null_count()); @@ -482,7 +482,7 @@ mod tests { for i in 0..5 { builder.append_value(i); } - let arr = builder.finish(); + let arr = builder.build(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -499,7 +499,7 @@ mod tests { for i in 0..5 { builder.append_value(i); } - let arr = builder.finish(); + let arr = builder.build(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -545,7 +545,7 @@ mod tests { builder.append_option(Some(2)); builder.append_option(None); builder.append_option(Some(4)); - let arr2 = builder.finish(); + let arr2 = builder.build(); assert_eq!(arr1.len(), arr2.len()); assert_eq!(arr1.offset(), arr2.offset()); @@ -569,7 +569,7 @@ mod tests { builder.append_null(); builder.append_null(); builder.append_value(4); - let arr2 = builder.finish(); + let arr2 = builder.build(); assert_eq!(arr1.len(), arr2.len()); assert_eq!(arr1.offset(), arr2.offset()); @@ -592,7 +592,7 @@ mod tests { builder.append_null(); builder.append_null(); builder.append_value(4); - let arr2 = builder.finish(); + let arr2 = builder.build(); assert_eq!(arr1.len(), arr2.len()); assert_eq!(arr1.offset(), arr2.offset()); @@ -646,14 +646,14 @@ mod tests { fn test_primitive_array_builder_with_data_type() { let mut builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(1, 2)); builder.append_value(1); - let array = builder.finish(); + let array = builder.build(); assert_eq!(array.precision(), 1); assert_eq!(array.scale(), 2); let data_type = DataType::Timestamp(TimeUnit::Nanosecond, Some("+00:00".into())); let mut builder = TimestampNanosecondBuilder::new().with_data_type(data_type.clone()); builder.append_value(1); - let array = builder.finish(); + let array = builder.build(); assert_eq!(array.data_type(), &data_type); } @@ -682,7 +682,7 @@ mod tests { let mut builder = PrimitiveBuilder::::new(); builder.extend([1, 2, 3, 5, 2, 4, 4].into_iter().map(Some)); builder.extend([2, 4, 6, 2].into_iter().map(Some)); - let array = builder.finish(); + let array = builder.build(); assert_eq!(array.values(), &[1, 2, 3, 5, 2, 4, 4, 2, 4, 6, 2]); } @@ -711,7 +711,7 @@ mod tests { builder.append_array(&arr1); builder.append_array(&arr2); builder.append_array(&arr3); - let actual = builder.finish(); + let actual = builder.build(); let expected = Int32Array::from(input); assert_eq!(actual, expected); @@ -726,7 +726,7 @@ mod tests { let mut builder = Int32Array::builder(5); builder.append_array(&array); - let actual = builder.finish(); + let actual = builder.build(); assert_eq!(actual, array); assert_eq!(actual.values(), array.values()) @@ -738,7 +738,7 @@ mod tests { let array = { let mut builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(1, 2)); builder.append_value(1); - builder.finish() + builder.build() }; let mut builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(2, 3)); diff --git a/arrow-array/src/builder/primitive_dictionary_builder.rs b/arrow-array/src/builder/primitive_dictionary_builder.rs index d9544aec3b9d..fd8c75742d02 100644 --- a/arrow-array/src/builder/primitive_dictionary_builder.rs +++ b/arrow-array/src/builder/primitive_dictionary_builder.rs @@ -198,7 +198,7 @@ where /// /// assert_eq!(keys, &UInt16Array::from_iter(0..256)); pub fn try_new_from_builder( - mut source: PrimitiveDictionaryBuilder, + source: PrimitiveDictionaryBuilder, ) -> Result where K::Native: NumCast, @@ -208,7 +208,7 @@ where let map = source.map; let values_builder = source.values_builder; - let source_keys = source.keys_builder.finish(); + let source_keys = source.keys_builder.build(); let new_keys: PrimitiveArray = source_keys.try_unary(|value| { num_traits::cast::cast::(value).ok_or_else(|| { ArrowError::CastError(format!( @@ -669,8 +669,8 @@ mod tests { values_builder.append_value(42); keys_builder.append_value(1); - let values = values_builder.finish(); - let keys = keys_builder.finish(); + let values = values_builder.build(); + let keys = keys_builder.build(); let data_type = DataType::Dictionary( Box::new(Int32Type::DATA_TYPE), @@ -774,7 +774,7 @@ mod tests { .append_value(<::Native as From>::from(1u8)); expected_keys_builder .append_value(<::Native as From>::from(2u8)); - let expected_keys = expected_keys_builder.finish(); + let expected_keys = expected_keys_builder.build(); assert_eq!(array.keys(), &expected_keys); let av = array.values(); diff --git a/arrow-array/src/builder/primitive_run_builder.rs b/arrow-array/src/builder/primitive_run_builder.rs index 52bdaa6f40e4..7e95f0c6bb3d 100644 --- a/arrow-array/src/builder/primitive_run_builder.rs +++ b/arrow-array/src/builder/primitive_run_builder.rs @@ -204,8 +204,8 @@ where let mut run_end_builder = run_ends_array.into_builder().unwrap(); let mut values_builder = values_array.into_builder().unwrap(); self.append_run_end_with_builders(&mut run_end_builder, &mut values_builder); - run_ends_array = run_end_builder.finish(); - values_array = values_builder.finish(); + run_ends_array = run_end_builder.build(); + values_array = values_builder.build(); } RunArray::try_new(&run_ends_array, &values_array).unwrap() diff --git a/arrow-cast/src/cast/decimal.rs b/arrow-cast/src/cast/decimal.rs index f8fe06a573de..3307b938edf5 100644 --- a/arrow-cast/src/cast/decimal.rs +++ b/arrow-cast/src/cast/decimal.rs @@ -901,7 +901,7 @@ where } } } - Ok(Arc::new(value_builder.finish())) + Ok(Arc::new(value_builder.build())) } /// Cast a decimal array to a floating point array. diff --git a/arrow-cast/src/cast/mod.rs b/arrow-cast/src/cast/mod.rs index 6c1629a820cf..5be2e5f9feba 100644 --- a/arrow-cast/src/cast/mod.rs +++ b/arrow-cast/src/cast/mod.rs @@ -8157,7 +8157,7 @@ mod tests { builder.append_value(1); builder.append_null(); builder.append_value(3); - let array: ArrayRef = Arc::new(builder.finish()); + let array: ArrayRef = Arc::new(builder.build()); let expected = vec!["1", "null", "3"]; diff --git a/arrow-cast/src/cast/run_array.rs b/arrow-cast/src/cast/run_array.rs index 9878f0977282..07c48ceaa1eb 100644 --- a/arrow-cast/src/cast/run_array.rs +++ b/arrow-cast/src/cast/run_array.rs @@ -125,7 +125,7 @@ pub(crate) fn cast_to_run_end_encoded( // Return early if the array to cast is empty if cast_array.is_empty() { - let empty_run_ends = run_ends_builder.finish(); + let empty_run_ends = run_ends_builder.build(); let empty_values = make_array(ArrayData::new_empty(value_type)); return Ok(Arc::new(RunArray::::try_new( &empty_run_ends, @@ -158,7 +158,7 @@ pub(crate) fn cast_to_run_end_encoded( ArrowError::CastError(format!("Run end index out of range: {}", run_end)) })?); } - let run_ends_array = run_ends_builder.finish(); + let run_ends_array = run_ends_builder.build(); // Build the values array by taking elements at the run start positions let indices = PrimitiveArray::::from_iter_values( values_indexes.iter().map(|&idx| idx as u32), diff --git a/arrow-cast/src/pretty.rs b/arrow-cast/src/pretty.rs index e7c199dbed97..6a71ed3ff930 100644 --- a/arrow-cast/src/pretty.rs +++ b/arrow-cast/src/pretty.rs @@ -601,7 +601,7 @@ mod tests { let mut builder = PrimitiveBuilder::::with_capacity(10); builder.append_value(value); builder.append_null(); - let array = builder.finish(); + let array = builder.build(); let array = array.with_timezone(timezone); let schema = Arc::new(Schema::new(vec![Field::new( diff --git a/arrow-csv/src/reader/mod.rs b/arrow-csv/src/reader/mod.rs index e26072fea917..68e60de4be75 100644 --- a/arrow-csv/src/reader/mod.rs +++ b/arrow-csv/src/reader/mod.rs @@ -973,7 +973,7 @@ fn build_decimal_array( } Ok(Arc::new( decimal_builder - .finish() + .build() .with_precision_and_scale(precision, scale)?, )) } diff --git a/arrow-csv/src/writer.rs b/arrow-csv/src/writer.rs index c38d1cdec337..782ce7aa50cf 100644 --- a/arrow-csv/src/writer.rs +++ b/arrow-csv/src/writer.rs @@ -727,15 +727,15 @@ sed do eiusmod tempor,-556132.25,1,,2019-04-18T02:45:55.555,23:46:03,foo let mut c1_builder = Decimal32Builder::new().with_data_type(DataType::Decimal32(9, 6)); c1_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]); - let c1 = c1_builder.finish(); + let c1 = c1_builder.build(); let mut c2_builder = Decimal64Builder::new().with_data_type(DataType::Decimal64(17, 6)); c2_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]); - let c2 = c2_builder.finish(); + let c2 = c2_builder.build(); let mut c3_builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(38, 6)); c3_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]); - let c3 = c3_builder.finish(); + let c3 = c3_builder.build(); let mut c4_builder = Decimal256Builder::new().with_data_type(DataType::Decimal256(76, 6)); c4_builder.extend(vec![ @@ -744,7 +744,7 @@ sed do eiusmod tempor,-556132.25,1,,2019-04-18T02:45:55.555,23:46:03,foo None, Some(i256::from_i128(290472)), ]); - let c4 = c4_builder.finish(); + let c4 = c4_builder.build(); let batch = RecordBatch::try_new( Arc::new(schema), diff --git a/arrow-flight/src/sql/metadata/sql_info.rs b/arrow-flight/src/sql/metadata/sql_info.rs index 155946ea6ce6..e84684289f75 100644 --- a/arrow-flight/src/sql/metadata/sql_info.rs +++ b/arrow-flight/src/sql/metadata/sql_info.rs @@ -277,15 +277,15 @@ impl SqlInfoUnionBuilder { let Self { mut string_values, mut bool_values, - mut bigint_values, - mut int32_bitmask_values, + bigint_values, + int32_bitmask_values, mut string_list_values, mut int32_to_int32_list_map_values, - mut type_ids, - mut offsets, + type_ids, + offsets, } = self; - let type_ids = type_ids.finish(); - let offsets = offsets.finish(); + let type_ids = type_ids.build(); + let offsets = offsets.build(); // form the correct ArrayData @@ -301,8 +301,8 @@ impl SqlInfoUnionBuilder { let child_data = vec![ string_values.finish().into_data(), bool_values.finish().into_data(), - bigint_values.finish().into_data(), - int32_bitmask_values.finish().into_data(), + bigint_values.build().into_data(), + int32_bitmask_values.build().into_data(), string_list_values.finish().into_data(), int32_to_int32_list_map_values.finish().into_data(), ]; @@ -366,7 +366,7 @@ impl SqlInfoDataBuilder { } let batch = RecordBatch::try_from_iter(vec![ - ("info_name", Arc::new(name_builder.finish()) as _), + ("info_name", Arc::new(name_builder.build()) as _), ("value", Arc::new(value_builder.finish()) as _), ])?; diff --git a/arrow-flight/src/sql/metadata/xdbc_info.rs b/arrow-flight/src/sql/metadata/xdbc_info.rs index 62e2de9e5d97..df49d4802865 100644 --- a/arrow-flight/src/sql/metadata/xdbc_info.rs +++ b/arrow-flight/src/sql/metadata/xdbc_info.rs @@ -224,27 +224,27 @@ impl XdbcTypeInfoDataBuilder { }); let type_name = Arc::new(type_name_builder.finish()); - let data_type = Arc::new(data_type_builder.finish()); - let column_size = Arc::new(column_size_builder.finish()); + let data_type = Arc::new(data_type_builder.build()); + let column_size = Arc::new(column_size_builder.build()); let literal_prefix = Arc::new(literal_prefix_builder.finish()); let literal_suffix = Arc::new(literal_suffix_builder.finish()); let (field, offsets, values, nulls) = create_params_builder.finish().into_parts(); // Re-defined the field to be non-nullable let new_field = Arc::new(field.as_ref().clone().with_nullable(false)); let create_params = Arc::new(ListArray::new(new_field, offsets, values, nulls)) as ArrayRef; - let nullable = Arc::new(nullable_builder.finish()); + let nullable = Arc::new(nullable_builder.build()); let case_sensitive = Arc::new(case_sensitive_builder.finish()); - let searchable = Arc::new(searchable_builder.finish()); + let searchable = Arc::new(searchable_builder.build()); let unsigned_attribute = Arc::new(unsigned_attribute_builder.finish()); let fixed_prec_scale = Arc::new(fixed_prec_scale_builder.finish()); let auto_increment = Arc::new(auto_increment_builder.finish()); let local_type_name = Arc::new(local_type_name_builder.finish()); - let minimum_scale = Arc::new(minimum_scale_builder.finish()); - let maximum_scale = Arc::new(maximum_scale_builder.finish()); - let sql_data_type = Arc::new(sql_data_type_builder.finish()); - let datetime_subcode = Arc::new(datetime_subcode_builder.finish()); - let num_prec_radix = Arc::new(num_prec_radix_builder.finish()); - let interval_precision = Arc::new(interval_precision_builder.finish()); + let minimum_scale = Arc::new(minimum_scale_builder.build()); + let maximum_scale = Arc::new(maximum_scale_builder.build()); + let sql_data_type = Arc::new(sql_data_type_builder.build()); + let datetime_subcode = Arc::new(datetime_subcode_builder.build()); + let num_prec_radix = Arc::new(num_prec_radix_builder.build()); + let interval_precision = Arc::new(interval_precision_builder.build()); let batch = RecordBatch::try_new( Arc::clone(&GET_XDBC_INFO_SCHEMA), diff --git a/arrow-integration-test/src/lib.rs b/arrow-integration-test/src/lib.rs index 0f0b4fe2ffee..8052d4ce78be 100644 --- a/arrow-integration-test/src/lib.rs +++ b/arrow-integration-test/src/lib.rs @@ -375,7 +375,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Int16 => { let mut b = Int16Builder::with_capacity(json_col.count); @@ -391,7 +391,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Int32 | DataType::Date32 | DataType::Time32(_) => { let mut b = Int32Builder::with_capacity(json_col.count); @@ -407,7 +407,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - let array = Arc::new(b.finish()) as ArrayRef; + let array = Arc::new(b.build()) as ArrayRef; arrow::compute::cast(&array, field.data_type()) } DataType::Interval(IntervalUnit::YearMonth) => { @@ -424,7 +424,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Int64 | DataType::Date64 @@ -448,7 +448,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - let array = Arc::new(b.finish()) as ArrayRef; + let array = Arc::new(b.build()) as ArrayRef; arrow::compute::cast(&array, field.data_type()) } DataType::Interval(IntervalUnit::DayTime) => { @@ -489,7 +489,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::UInt8 => { let mut b = UInt8Builder::with_capacity(json_col.count); @@ -505,7 +505,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::UInt16 => { let mut b = UInt16Builder::with_capacity(json_col.count); @@ -521,7 +521,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::UInt32 => { let mut b = UInt32Builder::with_capacity(json_col.count); @@ -537,7 +537,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::UInt64 => { let mut b = UInt64Builder::with_capacity(json_col.count); @@ -567,7 +567,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Interval(IntervalUnit::MonthDayNano) => { let mut b = IntervalMonthDayNanoBuilder::with_capacity(json_col.count); @@ -605,7 +605,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Float32 => { let mut b = Float32Builder::with_capacity(json_col.count); @@ -621,7 +621,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Float64 => { let mut b = Float64Builder::with_capacity(json_col.count); @@ -637,7 +637,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.finish())) + Ok(Arc::new(b.build())) } DataType::Binary => { let mut b = BinaryBuilder::with_capacity(json_col.count, 1024); @@ -841,7 +841,7 @@ pub fn array_from_json( }; } Ok(Arc::new( - b.finish().with_precision_and_scale(*precision, *scale)?, + b.build().with_precision_and_scale(*precision, *scale)?, )) } DataType::Decimal64(precision, scale) => { @@ -859,7 +859,7 @@ pub fn array_from_json( }; } Ok(Arc::new( - b.finish().with_precision_and_scale(*precision, *scale)?, + b.build().with_precision_and_scale(*precision, *scale)?, )) } DataType::Decimal128(precision, scale) => { @@ -877,7 +877,7 @@ pub fn array_from_json( }; } Ok(Arc::new( - b.finish().with_precision_and_scale(*precision, *scale)?, + b.build().with_precision_and_scale(*precision, *scale)?, )) } DataType::Decimal256(precision, scale) => { @@ -906,7 +906,7 @@ pub fn array_from_json( } } Ok(Arc::new( - b.finish().with_precision_and_scale(*precision, *scale)?, + b.build().with_precision_and_scale(*precision, *scale)?, )) } DataType::Map(child_field, _) => { diff --git a/arrow-ipc/benches/ipc_reader.rs b/arrow-ipc/benches/ipc_reader.rs index ef1de88d328d..455d3c528528 100644 --- a/arrow-ipc/benches/ipc_reader.rs +++ b/arrow-ipc/benches/ipc_reader.rs @@ -284,10 +284,10 @@ fn create_batch(num_rows: usize, allow_nulls: bool) -> RecordBatch { b.append_value(format!("this is string number {i}")); } } - let a = a.finish(); + let a = a.build(); let b = b.finish(); - let c = c.finish(); - let d = d.finish(); + let c = c.build(); + let d = d.build(); RecordBatch::try_new( schema.clone(), vec![Arc::new(a), Arc::new(b), Arc::new(c), Arc::new(d)], diff --git a/arrow-ipc/benches/ipc_writer.rs b/arrow-ipc/benches/ipc_writer.rs index eda7e3c58fe0..ffaf533857b3 100644 --- a/arrow-ipc/benches/ipc_writer.rs +++ b/arrow-ipc/benches/ipc_writer.rs @@ -94,10 +94,10 @@ fn create_batch(num_rows: usize, allow_nulls: bool) -> RecordBatch { b.append_value(format!("this is string number {i}")); } } - let a = a.finish(); + let a = a.build(); let b = b.finish(); - let c = c.finish(); - let d = d.finish(); + let c = c.build(); + let d = d.build(); RecordBatch::try_new( schema.clone(), vec![Arc::new(a), Arc::new(b), Arc::new(c), Arc::new(d)], diff --git a/arrow-json/src/reader/decimal_array.rs b/arrow-json/src/reader/decimal_array.rs index 07a5e182a354..9f386ea32ed6 100644 --- a/arrow-json/src/reader/decimal_array.rs +++ b/arrow-json/src/reader/decimal_array.rs @@ -95,7 +95,7 @@ where } Ok(builder - .finish() + .build() .with_precision_and_scale(self.precision, self.scale)? .into_data()) } diff --git a/arrow-json/src/reader/primitive_array.rs b/arrow-json/src/reader/primitive_array.rs index b2bffe45e43a..6e695e9415f4 100644 --- a/arrow-json/src/reader/primitive_array.rs +++ b/arrow-json/src/reader/primitive_array.rs @@ -154,6 +154,6 @@ where } } - Ok(builder.finish().into_data()) + Ok(builder.build().into_data()) } } diff --git a/arrow-select/src/concat.rs b/arrow-select/src/concat.rs index a6e3083a6ee7..c66fea19d74d 100644 --- a/arrow-select/src/concat.rs +++ b/arrow-select/src/concat.rs @@ -273,7 +273,7 @@ fn concat_primitives(arrays: &[&dyn Array]) -> Result Result { diff --git a/arrow-select/src/interleave.rs b/arrow-select/src/interleave.rs index d4303e8d85eb..9249ae18b125 100644 --- a/arrow-select/src/interleave.rs +++ b/arrow-select/src/interleave.rs @@ -238,7 +238,7 @@ fn interleave_dictionaries( false => keys.append_null(), } } - let array = unsafe { DictionaryArray::new_unchecked(keys.finish(), merged.values) }; + let array = unsafe { DictionaryArray::new_unchecked(keys.build(), merged.values) }; Ok(Arc::new(array)) } diff --git a/arrow-select/src/take.rs b/arrow-select/src/take.rs index 3e34e794f11f..e315b93944a3 100644 --- a/arrow-select/src/take.rs +++ b/arrow-select/src/take.rs @@ -943,7 +943,7 @@ where } } - Ok(values.finish()) + Ok(values.build()) } /// To avoid generating take implementations for every index type, instead we @@ -1924,7 +1924,7 @@ mod tests { for idx in take_indices { indices.append_option(idx.map(|i| i.to_u64().unwrap())); } - let indices = indices.finish(); + let indices = indices.build(); let taken = take(&list_view_array, &indices, None) .unwrap() diff --git a/arrow/benches/builder.rs b/arrow/benches/builder.rs index 2374797961a1..8ef75a59c453 100644 --- a/arrow/benches/builder.rs +++ b/arrow/benches/builder.rs @@ -47,7 +47,7 @@ fn bench_primitive(c: &mut Criterion) { for _ in 0..NUM_BATCHES { builder.append_slice(&data[..]); } - hint::black_box(builder.finish()); + hint::black_box(builder.build()); }) }); group.finish(); @@ -61,7 +61,7 @@ fn bench_primitive_nulls(c: &mut Criterion) { for _ in 0..NUM_BATCHES * BATCH_SIZE { builder.append_null(); } - hint::black_box(builder.finish()); + hint::black_box(builder.build()); }) }); group.finish(); @@ -118,7 +118,7 @@ fn bench_decimal32(c: &mut Criterion) { } hint::black_box( decimal_builder - .finish() + .build() .with_precision_and_scale(9, 0) .unwrap(), ); @@ -136,7 +136,7 @@ fn bench_decimal64(c: &mut Criterion) { } hint::black_box( decimal_builder - .finish() + .build() .with_precision_and_scale(18, 0) .unwrap(), ); @@ -154,7 +154,7 @@ fn bench_decimal128(c: &mut Criterion) { } hint::black_box( decimal_builder - .finish() + .build() .with_precision_and_scale(38, 0) .unwrap(), ); @@ -173,7 +173,7 @@ fn bench_decimal256(c: &mut Criterion) { } hint::black_box( decimal_builder - .finish() + .build() .with_precision_and_scale(76, 10) .unwrap(), ); diff --git a/arrow/benches/cast_kernels.rs b/arrow/benches/cast_kernels.rs index 040c118a1e83..c3dfb18b239c 100644 --- a/arrow/benches/cast_kernels.rs +++ b/arrow/benches/cast_kernels.rs @@ -92,7 +92,7 @@ fn build_decimal32_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .finish() + .build() .with_precision_and_scale(precision, scale) .unwrap(), ) @@ -107,7 +107,7 @@ fn build_decimal64_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .finish() + .build() .with_precision_and_scale(precision, scale) .unwrap(), ) @@ -122,7 +122,7 @@ fn build_decimal128_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .finish() + .build() .with_precision_and_scale(precision, scale) .unwrap(), ) @@ -139,7 +139,7 @@ fn build_decimal256_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .finish() + .build() .with_precision_and_scale(precision, scale) .unwrap(), ) diff --git a/arrow/benches/decimal_validate.rs b/arrow/benches/decimal_validate.rs index 474b93737005..19bdbe11daf9 100644 --- a/arrow/benches/decimal_validate.rs +++ b/arrow/benches/decimal_validate.rs @@ -53,7 +53,7 @@ fn validate_decimal32_benchmark(c: &mut Criterion) { decimal_builder.append_value(rng.random_range::(0..99999999)); } let decimal_array = decimal_builder - .finish() + .build() .with_precision_and_scale(9, 0) .unwrap(); let data = decimal_array.into_data(); @@ -73,7 +73,7 @@ fn validate_decimal64_benchmark(c: &mut Criterion) { decimal_builder.append_value(rng.random_range::(0..999999999999)); } let decimal_array = decimal_builder - .finish() + .build() .with_precision_and_scale(18, 0) .unwrap(); let data = decimal_array.into_data(); @@ -93,7 +93,7 @@ fn validate_decimal128_benchmark(c: &mut Criterion) { decimal_builder.append_value(rng.random_range::(0..999999999999)); } let decimal_array = decimal_builder - .finish() + .build() .with_precision_and_scale(38, 0) .unwrap(); let data = decimal_array.into_data(); @@ -115,7 +115,7 @@ fn validate_decimal256_benchmark(c: &mut Criterion) { decimal_builder.append_value(decimal); } let decimal_array256_data = decimal_builder - .finish() + .build() .with_precision_and_scale(76, 0) .unwrap(); let data = decimal_array256_data.into_data(); diff --git a/arrow/benches/primitive_run_take.rs b/arrow/benches/primitive_run_take.rs index c394c37c6ccf..f7df8156b409 100644 --- a/arrow/benches/primitive_run_take.rs +++ b/arrow/benches/primitive_run_take.rs @@ -36,7 +36,7 @@ fn create_random_index(size: usize, null_density: f32, max_value: usize) -> UInt builder.append_value(value); } } - builder.finish() + builder.build() } fn criterion_benchmark(c: &mut Criterion) { diff --git a/arrow/benches/take_kernels.rs b/arrow/benches/take_kernels.rs index 37b83a5e33ed..1cae17c03cfc 100644 --- a/arrow/benches/take_kernels.rs +++ b/arrow/benches/take_kernels.rs @@ -40,7 +40,7 @@ fn create_random_index(size: usize, null_density: f32) -> UInt32Array { builder.append_value(value); } } - builder.finish() + builder.build() } fn bench_take(values: &dyn Array, indices: &UInt32Array) { diff --git a/arrow/examples/builders.rs b/arrow/examples/builders.rs index 8043ad82fca6..f5a9bb42b5f5 100644 --- a/arrow/examples/builders.rs +++ b/arrow/examples/builders.rs @@ -49,7 +49,7 @@ fn main() { primitive_array_builder.append_slice(&(25..50).collect::>()); // Build the `PrimitiveArray` - let primitive_array = primitive_array_builder.finish(); + let primitive_array = primitive_array_builder.build(); // Long arrays will have an ellipsis printed in the middle println!("{primitive_array:?}"); diff --git a/arrow/tests/array_validation.rs b/arrow/tests/array_validation.rs index 62e7241f5e48..2a74fd69caea 100644 --- a/arrow/tests/array_validation.rs +++ b/arrow/tests/array_validation.rs @@ -1082,7 +1082,7 @@ fn test_decimal_validation() { let mut builder = Decimal128Builder::with_capacity(4); builder.append_value(10000); builder.append_value(20000); - let array = builder.finish(); + let array = builder.build(); array.into_data().validate_full().unwrap(); } diff --git a/parquet-variant-compute/src/variant_to_arrow.rs b/parquet-variant-compute/src/variant_to_arrow.rs index 17a750eed26e..e29e8f5bc77a 100644 --- a/parquet-variant-compute/src/variant_to_arrow.rs +++ b/parquet-variant-compute/src/variant_to_arrow.rs @@ -742,8 +742,8 @@ where } } - fn finish(mut self) -> Result { - Ok(Arc::new(self.builder.finish())) + fn finish(self) -> Result { + Ok(Arc::new(self.builder.build())) } } diff --git a/parquet/src/arrow/arrow_reader/statistics.rs b/parquet/src/arrow/arrow_reader/statistics.rs index 2f46c96be6b7..8f4d7f795438 100644 --- a/parquet/src/arrow/arrow_reader/statistics.rs +++ b/parquet/src/arrow/arrow_reader/statistics.rs @@ -1262,7 +1262,7 @@ impl<'a> StatisticsConverter<'a> { })?; builder.append_value(row_count); } - Ok(Some(builder.finish())) + Ok(Some(builder.build())) } /// Create a new `StatisticsConverter` to extract statistics for a column From 63fc1464fe1aad5bc293c61ec63501bffe1459a7 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 30 Jan 2026 09:32:11 -0500 Subject: [PATCH 4/4] Revert "Update references to use build" This reverts commit 68951064e7e4208d4168ad41b5536394d63144a4. --- arrow-arith/src/arity.rs | 6 ++-- arrow-array/benches/decimal_overflow.rs | 4 +-- arrow-array/src/array/dictionary_array.rs | 8 ++--- arrow-array/src/array/primitive_array.rs | 18 +++++----- arrow-array/src/builder/buffer_builder.rs | 2 +- .../fixed_size_binary_dictionary_builder.rs | 6 ++-- .../generic_bytes_dictionary_builder.rs | 8 ++--- arrow-array/src/builder/primitive_builder.rs | 28 +++++++-------- .../builder/primitive_dictionary_builder.rs | 10 +++--- .../src/builder/primitive_run_builder.rs | 4 +-- arrow-cast/src/cast/decimal.rs | 2 +- arrow-cast/src/cast/mod.rs | 2 +- arrow-cast/src/cast/run_array.rs | 4 +-- arrow-cast/src/pretty.rs | 2 +- arrow-csv/src/reader/mod.rs | 2 +- arrow-csv/src/writer.rs | 8 ++--- arrow-flight/src/sql/metadata/sql_info.rs | 18 +++++----- arrow-flight/src/sql/metadata/xdbc_info.rs | 20 +++++------ arrow-integration-test/src/lib.rs | 34 +++++++++---------- arrow-ipc/benches/ipc_reader.rs | 6 ++-- arrow-ipc/benches/ipc_writer.rs | 6 ++-- arrow-json/src/reader/decimal_array.rs | 2 +- arrow-json/src/reader/primitive_array.rs | 2 +- arrow-select/src/concat.rs | 2 +- arrow-select/src/interleave.rs | 2 +- arrow-select/src/take.rs | 4 +-- arrow/benches/builder.rs | 12 +++---- arrow/benches/cast_kernels.rs | 8 ++--- arrow/benches/decimal_validate.rs | 8 ++--- arrow/benches/primitive_run_take.rs | 2 +- arrow/benches/take_kernels.rs | 2 +- arrow/examples/builders.rs | 2 +- arrow/tests/array_validation.rs | 2 +- .../src/variant_to_arrow.rs | 4 +-- parquet/src/arrow/arrow_reader/statistics.rs | 2 +- 35 files changed, 126 insertions(+), 126 deletions(-) diff --git a/arrow-arith/src/arity.rs b/arrow-arith/src/arity.rs index d6849f4b6f7f..b9f7a82963c7 100644 --- a/arrow-arith/src/arity.rs +++ b/arrow-arith/src/arity.rs @@ -228,7 +228,7 @@ where .zip(b.values()) .for_each(|(l, r)| *l = op(*l, *r)); - let array = builder.build(); + let array = builder.finish(); // The builder has the null buffer from `a`, it is not changed. let nulls = NullBuffer::union(array.logical_nulls().as_ref(), b.logical_nulls().as_ref()); @@ -345,7 +345,7 @@ where if let Err(err) = r { return Ok(Err(err)); } - let array_builder = builder.build().into_data().into_builder(); + let array_builder = builder.finish().into_data().into_builder(); let array_data = unsafe { array_builder.nulls(Some(nulls)).build_unchecked() }; Ok(Ok(PrimitiveArray::::from(array_data))) } @@ -411,7 +411,7 @@ where }; }; } - Ok(Ok(builder.build())) + Ok(Ok(builder.finish())) } #[cfg(test)] diff --git a/arrow-array/benches/decimal_overflow.rs b/arrow-array/benches/decimal_overflow.rs index 46d88e6ee968..f9438b76de07 100644 --- a/arrow-array/benches/decimal_overflow.rs +++ b/arrow-array/benches/decimal_overflow.rs @@ -33,8 +33,8 @@ fn criterion_benchmark(c: &mut Criterion) { builder_256.append_value(i256::from_i128(i as i128)); } } - let array_128 = builder_128.build(); - let array_256 = builder_256.build(); + let array_128 = builder_128.finish(); + let array_256 = builder_256.finish(); c.bench_function("validate_decimal_precision_128", |b| { b.iter(|| hint::black_box(array_128.validate_decimal_precision(8))); diff --git a/arrow-array/src/array/dictionary_array.rs b/arrow-array/src/array/dictionary_array.rs index e2156accccfe..54f8c42dd84b 100644 --- a/arrow-array/src/array/dictionary_array.rs +++ b/arrow-array/src/array/dictionary_array.rs @@ -507,11 +507,11 @@ impl DictionaryArray { (Ok(key_builder), Ok(value_builder)) => Ok(unsafe { PrimitiveDictionaryBuilder::new_from_builders(key_builder, value_builder) }), - (Err(key_array), Ok(value_builder)) => { - Err(Self::try_new(key_array, Arc::new(value_builder.build())).unwrap()) + (Err(key_array), Ok(mut value_builder)) => { + Err(Self::try_new(key_array, Arc::new(value_builder.finish())).unwrap()) } - (Ok(key_builder), Err(value_array)) => { - Err(Self::try_new(key_builder.build(), Arc::new(value_array)).unwrap()) + (Ok(mut key_builder), Err(value_array)) => { + Err(Self::try_new(key_builder.finish(), Arc::new(value_array)).unwrap()) } (Err(key_array), Err(value_array)) => { Err(Self::try_new(key_array, Arc::new(value_array)).unwrap()) diff --git a/arrow-array/src/array/primitive_array.rs b/arrow-array/src/array/primitive_array.rs index ac8074563419..29189b450a40 100644 --- a/arrow-array/src/array/primitive_array.rs +++ b/arrow-array/src/array/primitive_array.rs @@ -957,7 +957,7 @@ impl PrimitiveArray { .values_slice_mut() .iter_mut() .for_each(|v| *v = op(*v)); - Ok(builder.build()) + Ok(builder.finish()) } /// Applies a unary fallible function to all valid values in a primitive @@ -1033,7 +1033,7 @@ impl PrimitiveArray { return Ok(Err(err)); } - Ok(Ok(builder.build())) + Ok(Ok(builder.finish())) } /// Applies a unary and nullable function to all valid values in a primitive array @@ -2105,7 +2105,7 @@ mod tests { builder.append_slice(&[0, 1]); builder.append_null(); builder.append_slice(&[3, 4]); - let arr = builder.build(); + let arr = builder.finish(); assert_eq!( "PrimitiveArray\n[\n 0,\n 1,\n null,\n 3,\n 4,\n]", format!("{arr:?}") @@ -2451,7 +2451,7 @@ mod tests { let mut decimal_builder = Decimal128Builder::with_capacity(10); decimal_builder.append_value(123456); decimal_builder.append_value(12345); - let result = decimal_builder.build().with_precision_and_scale(5, 3); + let result = decimal_builder.finish().with_precision_and_scale(5, 3); assert!(result.is_ok()); let arr = result.unwrap(); assert_eq!("12.345", arr.value_as_string(1)); @@ -2469,7 +2469,7 @@ mod tests { decimal_builder.append_value(99); decimal_builder.append_value(-100); decimal_builder.append_value(-99); - let result = decimal_builder.build().with_precision_and_scale(2, 1); + let result = decimal_builder.finish().with_precision_and_scale(2, 1); assert!(result.is_ok()); let arr = result.unwrap(); assert_eq!("9.9", arr.value_as_string(1)); @@ -2626,7 +2626,7 @@ mod tests { let decimal2 = i256::from_i128(56789); builder.append_value(decimal2); - let array: Decimal256Array = builder.build().with_precision_and_scale(76, 6).unwrap(); + let array: Decimal256Array = builder.finish().with_precision_and_scale(76, 6).unwrap(); let collected: Vec<_> = array.iter().collect(); assert_eq!(vec![Some(decimal1), None, Some(decimal2)], collected); @@ -2673,7 +2673,7 @@ mod tests { let decimal2 = 56789; builder.append_value(decimal2); - let array: Decimal64Array = builder.build().with_precision_and_scale(18, 4).unwrap(); + let array: Decimal64Array = builder.finish().with_precision_and_scale(18, 4).unwrap(); let collected: Vec<_> = array.iter().collect(); assert_eq!(vec![Some(decimal1), None, Some(decimal2)], collected); @@ -2707,7 +2707,7 @@ mod tests { let decimal2 = 56789; builder.append_value(decimal2); - let array: Decimal32Array = builder.build().with_precision_and_scale(9, 2).unwrap(); + let array: Decimal32Array = builder.finish().with_precision_and_scale(9, 2).unwrap(); let collected: Vec<_> = array.iter().collect(); assert_eq!(vec![Some(decimal1), None, Some(decimal2)], collected); @@ -2771,7 +2771,7 @@ mod tests { let expected: Int32Array = vec![Some(4), Some(2), Some(1)].into_iter().collect(); - let new_array = builder.build(); + let new_array = builder.finish(); assert_eq!(expected, new_array); } diff --git a/arrow-array/src/builder/buffer_builder.rs b/arrow-array/src/builder/buffer_builder.rs index 1e492cef6000..d183aae86551 100644 --- a/arrow-array/src/builder/buffer_builder.rs +++ b/arrow-array/src/builder/buffer_builder.rs @@ -219,7 +219,7 @@ mod tests { a.append_values(values, is_valid); assert_eq!(a.len(), 7); - let array = a.build(); + let array = a.finish(); assert_eq!(array.value(0), 1); assert!(array.is_null(1)); assert_eq!(array.value(2), -2); diff --git a/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs b/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs index c435dda02533..fa3066b7e11e 100644 --- a/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs +++ b/arrow-array/src/builder/fixed_size_binary_dictionary_builder.rs @@ -128,7 +128,7 @@ where /// assert_eq!(keys, &UInt16Array::from_iter(0..256)); /// ``` pub fn try_new_from_builder( - source: FixedSizeBinaryDictionaryBuilder, + mut source: FixedSizeBinaryDictionaryBuilder, ) -> Result where K::Native: NumCast, @@ -140,7 +140,7 @@ where let values_builder = source.values_builder; let byte_width = source.byte_width; - let source_keys = source.keys_builder.build(); + let source_keys = source.keys_builder.finish(); let new_keys: PrimitiveArray = source_keys.try_unary(|value| { num_traits::cast::cast::(value).ok_or_else(|| { ArrowError::CastError(format!( @@ -561,7 +561,7 @@ mod tests { .append_value(<::Native as From>::from(1u8)); expected_keys_builder .append_value(<::Native as From>::from(2u8)); - let expected_keys = expected_keys_builder.build(); + let expected_keys = expected_keys_builder.finish(); assert_eq!(array.keys(), &expected_keys); let av = array.values(); diff --git a/arrow-array/src/builder/generic_bytes_dictionary_builder.rs b/arrow-array/src/builder/generic_bytes_dictionary_builder.rs index 93314d00f746..35c7bfced1fd 100644 --- a/arrow-array/src/builder/generic_bytes_dictionary_builder.rs +++ b/arrow-array/src/builder/generic_bytes_dictionary_builder.rs @@ -184,7 +184,7 @@ where /// assert_eq!(keys, &UInt16Array::from_iter(0..256)); /// ``` pub fn try_new_from_builder( - source: GenericByteDictionaryBuilder, + mut source: GenericByteDictionaryBuilder, ) -> Result where K::Native: NumCast, @@ -195,7 +195,7 @@ where let dedup = source.dedup; let values_builder = source.values_builder; - let source_keys = source.keys_builder.build(); + let source_keys = source.keys_builder.finish(); let new_keys: PrimitiveArray = source_keys.try_unary(|value| { num_traits::cast::cast::(value).ok_or_else(|| { ArrowError::CastError(format!( @@ -741,7 +741,7 @@ mod tests { expected_keys_builder.append_null(); expected_keys_builder .append_value(<::Native as From>::from(2u8)); - let expected_keys = expected_keys_builder.build(); + let expected_keys = expected_keys_builder.finish(); assert_eq!(array.keys(), &expected_keys); let av = array.values(); @@ -975,7 +975,7 @@ mod tests { keys_builder.append_value(1); let values = values_builder.finish(); - let keys = keys_builder.build(); + let keys = keys_builder.finish(); let data_type = DataType::Dictionary( Box::new(Int32Type::DATA_TYPE), diff --git a/arrow-array/src/builder/primitive_builder.rs b/arrow-array/src/builder/primitive_builder.rs index 429feb7c8f0f..0707212901cd 100644 --- a/arrow-array/src/builder/primitive_builder.rs +++ b/arrow-array/src/builder/primitive_builder.rs @@ -436,7 +436,7 @@ mod tests { for i in 0..5 { builder.append_value(i); } - let arr = builder.build(); + let arr = builder.finish(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -451,7 +451,7 @@ mod tests { fn test_primitive_array_builder_i32_append_iter() { let mut builder = Int32Array::builder(5); unsafe { builder.append_trusted_len_iter(0..5) }; - let arr = builder.build(); + let arr = builder.finish(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -466,7 +466,7 @@ mod tests { fn test_primitive_array_builder_i32_append_nulls() { let mut builder = Int32Array::builder(5); builder.append_nulls(5); - let arr = builder.build(); + let arr = builder.finish(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(5, arr.null_count()); @@ -482,7 +482,7 @@ mod tests { for i in 0..5 { builder.append_value(i); } - let arr = builder.build(); + let arr = builder.finish(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -499,7 +499,7 @@ mod tests { for i in 0..5 { builder.append_value(i); } - let arr = builder.build(); + let arr = builder.finish(); assert_eq!(5, arr.len()); assert_eq!(0, arr.offset()); assert_eq!(0, arr.null_count()); @@ -545,7 +545,7 @@ mod tests { builder.append_option(Some(2)); builder.append_option(None); builder.append_option(Some(4)); - let arr2 = builder.build(); + let arr2 = builder.finish(); assert_eq!(arr1.len(), arr2.len()); assert_eq!(arr1.offset(), arr2.offset()); @@ -569,7 +569,7 @@ mod tests { builder.append_null(); builder.append_null(); builder.append_value(4); - let arr2 = builder.build(); + let arr2 = builder.finish(); assert_eq!(arr1.len(), arr2.len()); assert_eq!(arr1.offset(), arr2.offset()); @@ -592,7 +592,7 @@ mod tests { builder.append_null(); builder.append_null(); builder.append_value(4); - let arr2 = builder.build(); + let arr2 = builder.finish(); assert_eq!(arr1.len(), arr2.len()); assert_eq!(arr1.offset(), arr2.offset()); @@ -646,14 +646,14 @@ mod tests { fn test_primitive_array_builder_with_data_type() { let mut builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(1, 2)); builder.append_value(1); - let array = builder.build(); + let array = builder.finish(); assert_eq!(array.precision(), 1); assert_eq!(array.scale(), 2); let data_type = DataType::Timestamp(TimeUnit::Nanosecond, Some("+00:00".into())); let mut builder = TimestampNanosecondBuilder::new().with_data_type(data_type.clone()); builder.append_value(1); - let array = builder.build(); + let array = builder.finish(); assert_eq!(array.data_type(), &data_type); } @@ -682,7 +682,7 @@ mod tests { let mut builder = PrimitiveBuilder::::new(); builder.extend([1, 2, 3, 5, 2, 4, 4].into_iter().map(Some)); builder.extend([2, 4, 6, 2].into_iter().map(Some)); - let array = builder.build(); + let array = builder.finish(); assert_eq!(array.values(), &[1, 2, 3, 5, 2, 4, 4, 2, 4, 6, 2]); } @@ -711,7 +711,7 @@ mod tests { builder.append_array(&arr1); builder.append_array(&arr2); builder.append_array(&arr3); - let actual = builder.build(); + let actual = builder.finish(); let expected = Int32Array::from(input); assert_eq!(actual, expected); @@ -726,7 +726,7 @@ mod tests { let mut builder = Int32Array::builder(5); builder.append_array(&array); - let actual = builder.build(); + let actual = builder.finish(); assert_eq!(actual, array); assert_eq!(actual.values(), array.values()) @@ -738,7 +738,7 @@ mod tests { let array = { let mut builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(1, 2)); builder.append_value(1); - builder.build() + builder.finish() }; let mut builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(2, 3)); diff --git a/arrow-array/src/builder/primitive_dictionary_builder.rs b/arrow-array/src/builder/primitive_dictionary_builder.rs index fd8c75742d02..d9544aec3b9d 100644 --- a/arrow-array/src/builder/primitive_dictionary_builder.rs +++ b/arrow-array/src/builder/primitive_dictionary_builder.rs @@ -198,7 +198,7 @@ where /// /// assert_eq!(keys, &UInt16Array::from_iter(0..256)); pub fn try_new_from_builder( - source: PrimitiveDictionaryBuilder, + mut source: PrimitiveDictionaryBuilder, ) -> Result where K::Native: NumCast, @@ -208,7 +208,7 @@ where let map = source.map; let values_builder = source.values_builder; - let source_keys = source.keys_builder.build(); + let source_keys = source.keys_builder.finish(); let new_keys: PrimitiveArray = source_keys.try_unary(|value| { num_traits::cast::cast::(value).ok_or_else(|| { ArrowError::CastError(format!( @@ -669,8 +669,8 @@ mod tests { values_builder.append_value(42); keys_builder.append_value(1); - let values = values_builder.build(); - let keys = keys_builder.build(); + let values = values_builder.finish(); + let keys = keys_builder.finish(); let data_type = DataType::Dictionary( Box::new(Int32Type::DATA_TYPE), @@ -774,7 +774,7 @@ mod tests { .append_value(<::Native as From>::from(1u8)); expected_keys_builder .append_value(<::Native as From>::from(2u8)); - let expected_keys = expected_keys_builder.build(); + let expected_keys = expected_keys_builder.finish(); assert_eq!(array.keys(), &expected_keys); let av = array.values(); diff --git a/arrow-array/src/builder/primitive_run_builder.rs b/arrow-array/src/builder/primitive_run_builder.rs index 7e95f0c6bb3d..52bdaa6f40e4 100644 --- a/arrow-array/src/builder/primitive_run_builder.rs +++ b/arrow-array/src/builder/primitive_run_builder.rs @@ -204,8 +204,8 @@ where let mut run_end_builder = run_ends_array.into_builder().unwrap(); let mut values_builder = values_array.into_builder().unwrap(); self.append_run_end_with_builders(&mut run_end_builder, &mut values_builder); - run_ends_array = run_end_builder.build(); - values_array = values_builder.build(); + run_ends_array = run_end_builder.finish(); + values_array = values_builder.finish(); } RunArray::try_new(&run_ends_array, &values_array).unwrap() diff --git a/arrow-cast/src/cast/decimal.rs b/arrow-cast/src/cast/decimal.rs index 3307b938edf5..f8fe06a573de 100644 --- a/arrow-cast/src/cast/decimal.rs +++ b/arrow-cast/src/cast/decimal.rs @@ -901,7 +901,7 @@ where } } } - Ok(Arc::new(value_builder.build())) + Ok(Arc::new(value_builder.finish())) } /// Cast a decimal array to a floating point array. diff --git a/arrow-cast/src/cast/mod.rs b/arrow-cast/src/cast/mod.rs index 5be2e5f9feba..6c1629a820cf 100644 --- a/arrow-cast/src/cast/mod.rs +++ b/arrow-cast/src/cast/mod.rs @@ -8157,7 +8157,7 @@ mod tests { builder.append_value(1); builder.append_null(); builder.append_value(3); - let array: ArrayRef = Arc::new(builder.build()); + let array: ArrayRef = Arc::new(builder.finish()); let expected = vec!["1", "null", "3"]; diff --git a/arrow-cast/src/cast/run_array.rs b/arrow-cast/src/cast/run_array.rs index 07c48ceaa1eb..9878f0977282 100644 --- a/arrow-cast/src/cast/run_array.rs +++ b/arrow-cast/src/cast/run_array.rs @@ -125,7 +125,7 @@ pub(crate) fn cast_to_run_end_encoded( // Return early if the array to cast is empty if cast_array.is_empty() { - let empty_run_ends = run_ends_builder.build(); + let empty_run_ends = run_ends_builder.finish(); let empty_values = make_array(ArrayData::new_empty(value_type)); return Ok(Arc::new(RunArray::::try_new( &empty_run_ends, @@ -158,7 +158,7 @@ pub(crate) fn cast_to_run_end_encoded( ArrowError::CastError(format!("Run end index out of range: {}", run_end)) })?); } - let run_ends_array = run_ends_builder.build(); + let run_ends_array = run_ends_builder.finish(); // Build the values array by taking elements at the run start positions let indices = PrimitiveArray::::from_iter_values( values_indexes.iter().map(|&idx| idx as u32), diff --git a/arrow-cast/src/pretty.rs b/arrow-cast/src/pretty.rs index 6a71ed3ff930..e7c199dbed97 100644 --- a/arrow-cast/src/pretty.rs +++ b/arrow-cast/src/pretty.rs @@ -601,7 +601,7 @@ mod tests { let mut builder = PrimitiveBuilder::::with_capacity(10); builder.append_value(value); builder.append_null(); - let array = builder.build(); + let array = builder.finish(); let array = array.with_timezone(timezone); let schema = Arc::new(Schema::new(vec![Field::new( diff --git a/arrow-csv/src/reader/mod.rs b/arrow-csv/src/reader/mod.rs index 68e60de4be75..e26072fea917 100644 --- a/arrow-csv/src/reader/mod.rs +++ b/arrow-csv/src/reader/mod.rs @@ -973,7 +973,7 @@ fn build_decimal_array( } Ok(Arc::new( decimal_builder - .build() + .finish() .with_precision_and_scale(precision, scale)?, )) } diff --git a/arrow-csv/src/writer.rs b/arrow-csv/src/writer.rs index 782ce7aa50cf..c38d1cdec337 100644 --- a/arrow-csv/src/writer.rs +++ b/arrow-csv/src/writer.rs @@ -727,15 +727,15 @@ sed do eiusmod tempor,-556132.25,1,,2019-04-18T02:45:55.555,23:46:03,foo let mut c1_builder = Decimal32Builder::new().with_data_type(DataType::Decimal32(9, 6)); c1_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]); - let c1 = c1_builder.build(); + let c1 = c1_builder.finish(); let mut c2_builder = Decimal64Builder::new().with_data_type(DataType::Decimal64(17, 6)); c2_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]); - let c2 = c2_builder.build(); + let c2 = c2_builder.finish(); let mut c3_builder = Decimal128Builder::new().with_data_type(DataType::Decimal128(38, 6)); c3_builder.extend(vec![Some(-3335724), Some(2179404), None, Some(290472)]); - let c3 = c3_builder.build(); + let c3 = c3_builder.finish(); let mut c4_builder = Decimal256Builder::new().with_data_type(DataType::Decimal256(76, 6)); c4_builder.extend(vec![ @@ -744,7 +744,7 @@ sed do eiusmod tempor,-556132.25,1,,2019-04-18T02:45:55.555,23:46:03,foo None, Some(i256::from_i128(290472)), ]); - let c4 = c4_builder.build(); + let c4 = c4_builder.finish(); let batch = RecordBatch::try_new( Arc::new(schema), diff --git a/arrow-flight/src/sql/metadata/sql_info.rs b/arrow-flight/src/sql/metadata/sql_info.rs index e84684289f75..155946ea6ce6 100644 --- a/arrow-flight/src/sql/metadata/sql_info.rs +++ b/arrow-flight/src/sql/metadata/sql_info.rs @@ -277,15 +277,15 @@ impl SqlInfoUnionBuilder { let Self { mut string_values, mut bool_values, - bigint_values, - int32_bitmask_values, + mut bigint_values, + mut int32_bitmask_values, mut string_list_values, mut int32_to_int32_list_map_values, - type_ids, - offsets, + mut type_ids, + mut offsets, } = self; - let type_ids = type_ids.build(); - let offsets = offsets.build(); + let type_ids = type_ids.finish(); + let offsets = offsets.finish(); // form the correct ArrayData @@ -301,8 +301,8 @@ impl SqlInfoUnionBuilder { let child_data = vec![ string_values.finish().into_data(), bool_values.finish().into_data(), - bigint_values.build().into_data(), - int32_bitmask_values.build().into_data(), + bigint_values.finish().into_data(), + int32_bitmask_values.finish().into_data(), string_list_values.finish().into_data(), int32_to_int32_list_map_values.finish().into_data(), ]; @@ -366,7 +366,7 @@ impl SqlInfoDataBuilder { } let batch = RecordBatch::try_from_iter(vec![ - ("info_name", Arc::new(name_builder.build()) as _), + ("info_name", Arc::new(name_builder.finish()) as _), ("value", Arc::new(value_builder.finish()) as _), ])?; diff --git a/arrow-flight/src/sql/metadata/xdbc_info.rs b/arrow-flight/src/sql/metadata/xdbc_info.rs index df49d4802865..62e2de9e5d97 100644 --- a/arrow-flight/src/sql/metadata/xdbc_info.rs +++ b/arrow-flight/src/sql/metadata/xdbc_info.rs @@ -224,27 +224,27 @@ impl XdbcTypeInfoDataBuilder { }); let type_name = Arc::new(type_name_builder.finish()); - let data_type = Arc::new(data_type_builder.build()); - let column_size = Arc::new(column_size_builder.build()); + let data_type = Arc::new(data_type_builder.finish()); + let column_size = Arc::new(column_size_builder.finish()); let literal_prefix = Arc::new(literal_prefix_builder.finish()); let literal_suffix = Arc::new(literal_suffix_builder.finish()); let (field, offsets, values, nulls) = create_params_builder.finish().into_parts(); // Re-defined the field to be non-nullable let new_field = Arc::new(field.as_ref().clone().with_nullable(false)); let create_params = Arc::new(ListArray::new(new_field, offsets, values, nulls)) as ArrayRef; - let nullable = Arc::new(nullable_builder.build()); + let nullable = Arc::new(nullable_builder.finish()); let case_sensitive = Arc::new(case_sensitive_builder.finish()); - let searchable = Arc::new(searchable_builder.build()); + let searchable = Arc::new(searchable_builder.finish()); let unsigned_attribute = Arc::new(unsigned_attribute_builder.finish()); let fixed_prec_scale = Arc::new(fixed_prec_scale_builder.finish()); let auto_increment = Arc::new(auto_increment_builder.finish()); let local_type_name = Arc::new(local_type_name_builder.finish()); - let minimum_scale = Arc::new(minimum_scale_builder.build()); - let maximum_scale = Arc::new(maximum_scale_builder.build()); - let sql_data_type = Arc::new(sql_data_type_builder.build()); - let datetime_subcode = Arc::new(datetime_subcode_builder.build()); - let num_prec_radix = Arc::new(num_prec_radix_builder.build()); - let interval_precision = Arc::new(interval_precision_builder.build()); + let minimum_scale = Arc::new(minimum_scale_builder.finish()); + let maximum_scale = Arc::new(maximum_scale_builder.finish()); + let sql_data_type = Arc::new(sql_data_type_builder.finish()); + let datetime_subcode = Arc::new(datetime_subcode_builder.finish()); + let num_prec_radix = Arc::new(num_prec_radix_builder.finish()); + let interval_precision = Arc::new(interval_precision_builder.finish()); let batch = RecordBatch::try_new( Arc::clone(&GET_XDBC_INFO_SCHEMA), diff --git a/arrow-integration-test/src/lib.rs b/arrow-integration-test/src/lib.rs index 8052d4ce78be..0f0b4fe2ffee 100644 --- a/arrow-integration-test/src/lib.rs +++ b/arrow-integration-test/src/lib.rs @@ -375,7 +375,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Int16 => { let mut b = Int16Builder::with_capacity(json_col.count); @@ -391,7 +391,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Int32 | DataType::Date32 | DataType::Time32(_) => { let mut b = Int32Builder::with_capacity(json_col.count); @@ -407,7 +407,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - let array = Arc::new(b.build()) as ArrayRef; + let array = Arc::new(b.finish()) as ArrayRef; arrow::compute::cast(&array, field.data_type()) } DataType::Interval(IntervalUnit::YearMonth) => { @@ -424,7 +424,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Int64 | DataType::Date64 @@ -448,7 +448,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - let array = Arc::new(b.build()) as ArrayRef; + let array = Arc::new(b.finish()) as ArrayRef; arrow::compute::cast(&array, field.data_type()) } DataType::Interval(IntervalUnit::DayTime) => { @@ -489,7 +489,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::UInt8 => { let mut b = UInt8Builder::with_capacity(json_col.count); @@ -505,7 +505,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::UInt16 => { let mut b = UInt16Builder::with_capacity(json_col.count); @@ -521,7 +521,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::UInt32 => { let mut b = UInt32Builder::with_capacity(json_col.count); @@ -537,7 +537,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::UInt64 => { let mut b = UInt64Builder::with_capacity(json_col.count); @@ -567,7 +567,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Interval(IntervalUnit::MonthDayNano) => { let mut b = IntervalMonthDayNanoBuilder::with_capacity(json_col.count); @@ -605,7 +605,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Float32 => { let mut b = Float32Builder::with_capacity(json_col.count); @@ -621,7 +621,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Float64 => { let mut b = Float64Builder::with_capacity(json_col.count); @@ -637,7 +637,7 @@ pub fn array_from_json( _ => b.append_null(), }; } - Ok(Arc::new(b.build())) + Ok(Arc::new(b.finish())) } DataType::Binary => { let mut b = BinaryBuilder::with_capacity(json_col.count, 1024); @@ -841,7 +841,7 @@ pub fn array_from_json( }; } Ok(Arc::new( - b.build().with_precision_and_scale(*precision, *scale)?, + b.finish().with_precision_and_scale(*precision, *scale)?, )) } DataType::Decimal64(precision, scale) => { @@ -859,7 +859,7 @@ pub fn array_from_json( }; } Ok(Arc::new( - b.build().with_precision_and_scale(*precision, *scale)?, + b.finish().with_precision_and_scale(*precision, *scale)?, )) } DataType::Decimal128(precision, scale) => { @@ -877,7 +877,7 @@ pub fn array_from_json( }; } Ok(Arc::new( - b.build().with_precision_and_scale(*precision, *scale)?, + b.finish().with_precision_and_scale(*precision, *scale)?, )) } DataType::Decimal256(precision, scale) => { @@ -906,7 +906,7 @@ pub fn array_from_json( } } Ok(Arc::new( - b.build().with_precision_and_scale(*precision, *scale)?, + b.finish().with_precision_and_scale(*precision, *scale)?, )) } DataType::Map(child_field, _) => { diff --git a/arrow-ipc/benches/ipc_reader.rs b/arrow-ipc/benches/ipc_reader.rs index 455d3c528528..ef1de88d328d 100644 --- a/arrow-ipc/benches/ipc_reader.rs +++ b/arrow-ipc/benches/ipc_reader.rs @@ -284,10 +284,10 @@ fn create_batch(num_rows: usize, allow_nulls: bool) -> RecordBatch { b.append_value(format!("this is string number {i}")); } } - let a = a.build(); + let a = a.finish(); let b = b.finish(); - let c = c.build(); - let d = d.build(); + let c = c.finish(); + let d = d.finish(); RecordBatch::try_new( schema.clone(), vec![Arc::new(a), Arc::new(b), Arc::new(c), Arc::new(d)], diff --git a/arrow-ipc/benches/ipc_writer.rs b/arrow-ipc/benches/ipc_writer.rs index ffaf533857b3..eda7e3c58fe0 100644 --- a/arrow-ipc/benches/ipc_writer.rs +++ b/arrow-ipc/benches/ipc_writer.rs @@ -94,10 +94,10 @@ fn create_batch(num_rows: usize, allow_nulls: bool) -> RecordBatch { b.append_value(format!("this is string number {i}")); } } - let a = a.build(); + let a = a.finish(); let b = b.finish(); - let c = c.build(); - let d = d.build(); + let c = c.finish(); + let d = d.finish(); RecordBatch::try_new( schema.clone(), vec![Arc::new(a), Arc::new(b), Arc::new(c), Arc::new(d)], diff --git a/arrow-json/src/reader/decimal_array.rs b/arrow-json/src/reader/decimal_array.rs index 9f386ea32ed6..07a5e182a354 100644 --- a/arrow-json/src/reader/decimal_array.rs +++ b/arrow-json/src/reader/decimal_array.rs @@ -95,7 +95,7 @@ where } Ok(builder - .build() + .finish() .with_precision_and_scale(self.precision, self.scale)? .into_data()) } diff --git a/arrow-json/src/reader/primitive_array.rs b/arrow-json/src/reader/primitive_array.rs index 6e695e9415f4..b2bffe45e43a 100644 --- a/arrow-json/src/reader/primitive_array.rs +++ b/arrow-json/src/reader/primitive_array.rs @@ -154,6 +154,6 @@ where } } - Ok(builder.build().into_data()) + Ok(builder.finish().into_data()) } } diff --git a/arrow-select/src/concat.rs b/arrow-select/src/concat.rs index c66fea19d74d..a6e3083a6ee7 100644 --- a/arrow-select/src/concat.rs +++ b/arrow-select/src/concat.rs @@ -273,7 +273,7 @@ fn concat_primitives(arrays: &[&dyn Array]) -> Result Result { diff --git a/arrow-select/src/interleave.rs b/arrow-select/src/interleave.rs index 9249ae18b125..d4303e8d85eb 100644 --- a/arrow-select/src/interleave.rs +++ b/arrow-select/src/interleave.rs @@ -238,7 +238,7 @@ fn interleave_dictionaries( false => keys.append_null(), } } - let array = unsafe { DictionaryArray::new_unchecked(keys.build(), merged.values) }; + let array = unsafe { DictionaryArray::new_unchecked(keys.finish(), merged.values) }; Ok(Arc::new(array)) } diff --git a/arrow-select/src/take.rs b/arrow-select/src/take.rs index e315b93944a3..3e34e794f11f 100644 --- a/arrow-select/src/take.rs +++ b/arrow-select/src/take.rs @@ -943,7 +943,7 @@ where } } - Ok(values.build()) + Ok(values.finish()) } /// To avoid generating take implementations for every index type, instead we @@ -1924,7 +1924,7 @@ mod tests { for idx in take_indices { indices.append_option(idx.map(|i| i.to_u64().unwrap())); } - let indices = indices.build(); + let indices = indices.finish(); let taken = take(&list_view_array, &indices, None) .unwrap() diff --git a/arrow/benches/builder.rs b/arrow/benches/builder.rs index 8ef75a59c453..2374797961a1 100644 --- a/arrow/benches/builder.rs +++ b/arrow/benches/builder.rs @@ -47,7 +47,7 @@ fn bench_primitive(c: &mut Criterion) { for _ in 0..NUM_BATCHES { builder.append_slice(&data[..]); } - hint::black_box(builder.build()); + hint::black_box(builder.finish()); }) }); group.finish(); @@ -61,7 +61,7 @@ fn bench_primitive_nulls(c: &mut Criterion) { for _ in 0..NUM_BATCHES * BATCH_SIZE { builder.append_null(); } - hint::black_box(builder.build()); + hint::black_box(builder.finish()); }) }); group.finish(); @@ -118,7 +118,7 @@ fn bench_decimal32(c: &mut Criterion) { } hint::black_box( decimal_builder - .build() + .finish() .with_precision_and_scale(9, 0) .unwrap(), ); @@ -136,7 +136,7 @@ fn bench_decimal64(c: &mut Criterion) { } hint::black_box( decimal_builder - .build() + .finish() .with_precision_and_scale(18, 0) .unwrap(), ); @@ -154,7 +154,7 @@ fn bench_decimal128(c: &mut Criterion) { } hint::black_box( decimal_builder - .build() + .finish() .with_precision_and_scale(38, 0) .unwrap(), ); @@ -173,7 +173,7 @@ fn bench_decimal256(c: &mut Criterion) { } hint::black_box( decimal_builder - .build() + .finish() .with_precision_and_scale(76, 10) .unwrap(), ); diff --git a/arrow/benches/cast_kernels.rs b/arrow/benches/cast_kernels.rs index c3dfb18b239c..040c118a1e83 100644 --- a/arrow/benches/cast_kernels.rs +++ b/arrow/benches/cast_kernels.rs @@ -92,7 +92,7 @@ fn build_decimal32_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .build() + .finish() .with_precision_and_scale(precision, scale) .unwrap(), ) @@ -107,7 +107,7 @@ fn build_decimal64_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .build() + .finish() .with_precision_and_scale(precision, scale) .unwrap(), ) @@ -122,7 +122,7 @@ fn build_decimal128_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .build() + .finish() .with_precision_and_scale(precision, scale) .unwrap(), ) @@ -139,7 +139,7 @@ fn build_decimal256_array(size: usize, precision: u8, scale: i8) -> ArrayRef { } Arc::new( builder - .build() + .finish() .with_precision_and_scale(precision, scale) .unwrap(), ) diff --git a/arrow/benches/decimal_validate.rs b/arrow/benches/decimal_validate.rs index 19bdbe11daf9..474b93737005 100644 --- a/arrow/benches/decimal_validate.rs +++ b/arrow/benches/decimal_validate.rs @@ -53,7 +53,7 @@ fn validate_decimal32_benchmark(c: &mut Criterion) { decimal_builder.append_value(rng.random_range::(0..99999999)); } let decimal_array = decimal_builder - .build() + .finish() .with_precision_and_scale(9, 0) .unwrap(); let data = decimal_array.into_data(); @@ -73,7 +73,7 @@ fn validate_decimal64_benchmark(c: &mut Criterion) { decimal_builder.append_value(rng.random_range::(0..999999999999)); } let decimal_array = decimal_builder - .build() + .finish() .with_precision_and_scale(18, 0) .unwrap(); let data = decimal_array.into_data(); @@ -93,7 +93,7 @@ fn validate_decimal128_benchmark(c: &mut Criterion) { decimal_builder.append_value(rng.random_range::(0..999999999999)); } let decimal_array = decimal_builder - .build() + .finish() .with_precision_and_scale(38, 0) .unwrap(); let data = decimal_array.into_data(); @@ -115,7 +115,7 @@ fn validate_decimal256_benchmark(c: &mut Criterion) { decimal_builder.append_value(decimal); } let decimal_array256_data = decimal_builder - .build() + .finish() .with_precision_and_scale(76, 0) .unwrap(); let data = decimal_array256_data.into_data(); diff --git a/arrow/benches/primitive_run_take.rs b/arrow/benches/primitive_run_take.rs index f7df8156b409..c394c37c6ccf 100644 --- a/arrow/benches/primitive_run_take.rs +++ b/arrow/benches/primitive_run_take.rs @@ -36,7 +36,7 @@ fn create_random_index(size: usize, null_density: f32, max_value: usize) -> UInt builder.append_value(value); } } - builder.build() + builder.finish() } fn criterion_benchmark(c: &mut Criterion) { diff --git a/arrow/benches/take_kernels.rs b/arrow/benches/take_kernels.rs index 1cae17c03cfc..37b83a5e33ed 100644 --- a/arrow/benches/take_kernels.rs +++ b/arrow/benches/take_kernels.rs @@ -40,7 +40,7 @@ fn create_random_index(size: usize, null_density: f32) -> UInt32Array { builder.append_value(value); } } - builder.build() + builder.finish() } fn bench_take(values: &dyn Array, indices: &UInt32Array) { diff --git a/arrow/examples/builders.rs b/arrow/examples/builders.rs index f5a9bb42b5f5..8043ad82fca6 100644 --- a/arrow/examples/builders.rs +++ b/arrow/examples/builders.rs @@ -49,7 +49,7 @@ fn main() { primitive_array_builder.append_slice(&(25..50).collect::>()); // Build the `PrimitiveArray` - let primitive_array = primitive_array_builder.build(); + let primitive_array = primitive_array_builder.finish(); // Long arrays will have an ellipsis printed in the middle println!("{primitive_array:?}"); diff --git a/arrow/tests/array_validation.rs b/arrow/tests/array_validation.rs index 2a74fd69caea..62e7241f5e48 100644 --- a/arrow/tests/array_validation.rs +++ b/arrow/tests/array_validation.rs @@ -1082,7 +1082,7 @@ fn test_decimal_validation() { let mut builder = Decimal128Builder::with_capacity(4); builder.append_value(10000); builder.append_value(20000); - let array = builder.build(); + let array = builder.finish(); array.into_data().validate_full().unwrap(); } diff --git a/parquet-variant-compute/src/variant_to_arrow.rs b/parquet-variant-compute/src/variant_to_arrow.rs index e29e8f5bc77a..17a750eed26e 100644 --- a/parquet-variant-compute/src/variant_to_arrow.rs +++ b/parquet-variant-compute/src/variant_to_arrow.rs @@ -742,8 +742,8 @@ where } } - fn finish(self) -> Result { - Ok(Arc::new(self.builder.build())) + fn finish(mut self) -> Result { + Ok(Arc::new(self.builder.finish())) } } diff --git a/parquet/src/arrow/arrow_reader/statistics.rs b/parquet/src/arrow/arrow_reader/statistics.rs index 8f4d7f795438..2f46c96be6b7 100644 --- a/parquet/src/arrow/arrow_reader/statistics.rs +++ b/parquet/src/arrow/arrow_reader/statistics.rs @@ -1262,7 +1262,7 @@ impl<'a> StatisticsConverter<'a> { })?; builder.append_value(row_count); } - Ok(Some(builder.build())) + Ok(Some(builder.finish())) } /// Create a new `StatisticsConverter` to extract statistics for a column