From fa2f734d19338aa59e16aca9b58e78556cd72573 Mon Sep 17 00:00:00 2001 From: sdf-jkl Date: Tue, 16 Jun 2026 19:44:10 -0400 Subject: [PATCH 1/2] add doc reference to `VariantArrayBuilder` --- parquet-variant/src/builder.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/parquet-variant/src/builder.rs b/parquet-variant/src/builder.rs index e6122f062c38..f07c98dbbea4 100644 --- a/parquet-variant/src/builder.rs +++ b/parquet-variant/src/builder.rs @@ -477,6 +477,25 @@ impl Drop for ParentState<'_, S> { /// Top level builder for [`Variant`] values /// +/// `VariantBuilder` builds a single, self-contained [`Variant`] value -- useful +/// for one-off values and unit tests. To build an array (column) of variants, +/// one per input row, use [`VariantArrayBuilder`] from the +/// `parquet-variant-compute` crate rather than a `VariantBuilder` per row. It +/// implements [`VariantBuilderExt`], so you append values and nested objects or +/// lists the same way: +/// +/// ```ignore +/// // build each row directly on the array builder; no per-row VariantBuilder +/// let mut builder = VariantArrayBuilder::new(num_rows); +/// for row in rows { +/// builder.new_object().with_field("id", row.id).finish(); +/// } +/// let variant_array = builder.build(); +/// ``` +/// +/// [`VariantBuilderExt`]: crate::VariantBuilderExt +/// [`VariantArrayBuilder`]: https://docs.rs/parquet-variant-compute/latest/parquet_variant_compute/struct.VariantArrayBuilder.html +/// /// # Example: create a Primitive Int8 /// ``` /// # use parquet_variant::{Variant, VariantBuilder}; From 964506df95dc461372404df751de98c37fc6ab88 Mon Sep 17 00:00:00 2001 From: sdf-jkl Date: Thu, 18 Jun 2026 16:35:35 -0400 Subject: [PATCH 2/2] remove example and move comment to `VariantArrayBuilder` --- .../src/variant_array_builder.rs | 8 ++++++++ parquet-variant/src/builder.rs | 14 +------------- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/parquet-variant-compute/src/variant_array_builder.rs b/parquet-variant-compute/src/variant_array_builder.rs index 4c7340a0fba4..f43e34d0cddf 100644 --- a/parquet-variant-compute/src/variant_array_builder.rs +++ b/parquet-variant-compute/src/variant_array_builder.rs @@ -37,6 +37,14 @@ use std::sync::Arc; /// This builder always creates a `VariantArray` using [`BinaryViewArray`] for both /// the metadata and value fields. /// +/// `VariantArrayBuilder` implements [`VariantBuilderExt`], so you append values +/// and nested objects or lists the same way as when building a single +/// [`Variant`] value with [`VariantBuilder`], rather than constructing a +/// `VariantBuilder` per row. +/// +/// [`VariantBuilder`]: parquet_variant::VariantBuilder +/// [`VariantBuilderExt`]: parquet_variant::VariantBuilderExt +/// /// # TODO /// 1. Support shredding: /// diff --git a/parquet-variant/src/builder.rs b/parquet-variant/src/builder.rs index f07c98dbbea4..131aa57fb24b 100644 --- a/parquet-variant/src/builder.rs +++ b/parquet-variant/src/builder.rs @@ -480,20 +480,8 @@ impl Drop for ParentState<'_, S> { /// `VariantBuilder` builds a single, self-contained [`Variant`] value -- useful /// for one-off values and unit tests. To build an array (column) of variants, /// one per input row, use [`VariantArrayBuilder`] from the -/// `parquet-variant-compute` crate rather than a `VariantBuilder` per row. It -/// implements [`VariantBuilderExt`], so you append values and nested objects or -/// lists the same way: +/// `parquet-variant-compute` crate rather than a `VariantBuilder` per row. /// -/// ```ignore -/// // build each row directly on the array builder; no per-row VariantBuilder -/// let mut builder = VariantArrayBuilder::new(num_rows); -/// for row in rows { -/// builder.new_object().with_field("id", row.id).finish(); -/// } -/// let variant_array = builder.build(); -/// ``` -/// -/// [`VariantBuilderExt`]: crate::VariantBuilderExt /// [`VariantArrayBuilder`]: https://docs.rs/parquet-variant-compute/latest/parquet_variant_compute/struct.VariantArrayBuilder.html /// /// # Example: create a Primitive Int8