From a8a4aee0a7d79a1f94dbccb552be208fb8a2a126 Mon Sep 17 00:00:00 2001 From: Ryan Johnson Date: Wed, 10 Sep 2025 09:13:29 -0700 Subject: [PATCH 1/2] [Variant] Move VariantAsPrimitive to type_conversions.rs --- .../src/type_conversion.rs | 44 +++++++++++++++++++ .../src/variant_get/output/row_builder.rs | 42 +----------------- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/parquet-variant-compute/src/type_conversion.rs b/parquet-variant-compute/src/type_conversion.rs index aa60b425a18b..79e3d8462776 100644 --- a/parquet-variant-compute/src/type_conversion.rs +++ b/parquet-variant-compute/src/type_conversion.rs @@ -17,6 +17,50 @@ //! Module for transforming a typed arrow `Array` to `VariantArray`. +use arrow::datatypes::{self, ArrowPrimitiveType}; +use parquet_variant::Variant; + +/// Helper trait for converting `Variant` values to arrow primitive values. +pub(crate) trait VariantAsPrimitive { + fn as_primitive(&self) -> Option; +} + +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_int32() + } +} +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_int16() + } +} +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_int8() + } +} +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_int64() + } +} +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_f16() + } +} +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_f32() + } +} +impl VariantAsPrimitive for Variant<'_, '_> { + fn as_primitive(&self) -> Option { + self.as_f64() + } +} + /// Convert the input array to a `VariantArray` row by row, using `method` /// not requiring a generic type to downcast the generic array to a specific /// array type and `cast_fn` to transform each element to a type compatible with Variant diff --git a/parquet-variant-compute/src/variant_get/output/row_builder.rs b/parquet-variant-compute/src/variant_get/output/row_builder.rs index 787bdd610d81..47e5104ea378 100644 --- a/parquet-variant-compute/src/variant_get/output/row_builder.rs +++ b/parquet-variant-compute/src/variant_get/output/row_builder.rs @@ -23,6 +23,7 @@ use arrow::error::{ArrowError, Result}; use parquet_variant::{Variant, VariantPath}; use crate::VariantArrayBuilder; +use crate::type_conversion::VariantAsPrimitive; use std::sync::Arc; @@ -211,47 +212,6 @@ impl VariantShreddingRowBuilder for VariantPathRo } } -/// Helper trait for converting `Variant` values to arrow primitive values. -trait VariantAsPrimitive { - fn as_primitive(&self) -> Option; -} - -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_int32() - } -} -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_int16() - } -} -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_int8() - } -} -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_int64() - } -} -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_f16() - } -} -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_f32() - } -} -impl VariantAsPrimitive for Variant<'_, '_> { - fn as_primitive(&self) -> Option { - self.as_f64() - } -} - /// Helper function to get a user-friendly type name fn get_type_name() -> &'static str { match std::any::type_name::() { From 9c2a5ced94d5869e6b39bd84abcad0464a463c51 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Thu, 11 Sep 2025 11:43:13 -0400 Subject: [PATCH 2/2] lint --- parquet-variant-compute/src/variant_get/output/row_builder.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/parquet-variant-compute/src/variant_get/output/row_builder.rs b/parquet-variant-compute/src/variant_get/output/row_builder.rs index 47e5104ea378..17136ccb13c0 100644 --- a/parquet-variant-compute/src/variant_get/output/row_builder.rs +++ b/parquet-variant-compute/src/variant_get/output/row_builder.rs @@ -22,8 +22,8 @@ use arrow::datatypes::ArrowPrimitiveType; use arrow::error::{ArrowError, Result}; use parquet_variant::{Variant, VariantPath}; -use crate::VariantArrayBuilder; use crate::type_conversion::VariantAsPrimitive; +use crate::VariantArrayBuilder; use std::sync::Arc;