diff --git a/parquet-variant-compute/src/cast_to_variant.rs b/parquet-variant-compute/src/cast_to_variant.rs index bce3a427a0f9..ed40538cabe1 100644 --- a/parquet-variant-compute/src/cast_to_variant.rs +++ b/parquet-variant-compute/src/cast_to_variant.rs @@ -229,6 +229,11 @@ pub fn cast_to_variant(input: &dyn Array) -> Result { DataType::FixedSizeBinary(_) => { non_generic_conversion!(as_fixed_size_binary, |v| v, input, builder); } + DataType::Null => { + for _ in 0..input.len() { + builder.append_null(); + } + } dt => { return Err(ArrowError::CastError(format!( "Unsupported data type for casting to Variant: {dt:?}", @@ -248,8 +253,8 @@ mod tests { use arrow::array::{ ArrayRef, BooleanArray, Decimal128Array, Decimal256Array, Decimal32Array, Decimal64Array, FixedSizeBinaryBuilder, Float16Array, Float32Array, Float64Array, GenericByteBuilder, - GenericByteViewBuilder, Int16Array, Int32Array, Int64Array, Int8Array, UInt16Array, - UInt32Array, UInt64Array, UInt8Array, + GenericByteViewBuilder, Int16Array, Int32Array, Int64Array, Int8Array, NullArray, + UInt16Array, UInt32Array, UInt64Array, UInt8Array, }; use arrow_schema::{ DECIMAL128_MAX_PRECISION, DECIMAL32_MAX_PRECISION, DECIMAL64_MAX_PRECISION, @@ -588,6 +593,11 @@ mod tests { ) } + #[test] + fn test_cast_to_variant_null() { + run_test(Arc::new(NullArray::new(2)), vec![None, None]) + } + #[test] fn test_cast_to_variant_decimal32() { run_test(