diff --git a/parquet-testing b/parquet-testing index 2dc8bf140ed6..b68bea40fed8 160000 --- a/parquet-testing +++ b/parquet-testing @@ -1 +1 @@ -Subproject commit 2dc8bf140ed6e28652fc347211c7d661714c7f95 +Subproject commit b68bea40fed8d1a780a9e09dd2262017e04b19ad diff --git a/parquet-variant/src/lib.rs b/parquet-variant/src/lib.rs index a31187daeb69..557271823bc5 100644 --- a/parquet-variant/src/lib.rs +++ b/parquet-variant/src/lib.rs @@ -30,12 +30,9 @@ // TODO: dead code removal #[allow(dead_code)] mod decoder; -// TODO: dead code removal -#[allow(dead_code)] mod variant; // TODO: dead code removal #[allow(dead_code)] mod utils; -#[cfg(test)] -mod test_variant; +pub use variant::*; diff --git a/parquet-variant/src/variant.rs b/parquet-variant/src/variant.rs index 999826f5c274..b7b1932580b1 100644 --- a/parquet-variant/src/variant.rs +++ b/parquet-variant/src/variant.rs @@ -88,7 +88,7 @@ impl OffsetSizeBytes { } #[derive(Clone, Debug, Copy, PartialEq)] -pub(crate) struct VariantMetadataHeader { +pub struct VariantMetadataHeader { version: u8, is_sorted: bool, /// Note: This is `offset_size_minus_one` + 1 @@ -323,10 +323,16 @@ pub struct VariantArray<'m, 'v> { } impl<'m, 'v> VariantArray<'m, 'v> { + /// Return the length of this array pub fn len(&self) -> usize { todo!() } + /// Is the array of zero length + pub fn is_empty(&self) -> bool { + self.len() == 0 + } + pub fn values(&self) -> Result>, ArrowError> { todo!(); #[allow(unreachable_code)] // Just to infer the return type diff --git a/parquet-variant/src/test_variant.rs b/parquet-variant/tests/variant_interop.rs similarity index 81% rename from parquet-variant/src/test_variant.rs rename to parquet-variant/tests/variant_interop.rs index 07c9eaf9c6f0..33bbbd5f5e15 100644 --- a/parquet-variant/src/test_variant.rs +++ b/parquet-variant/tests/variant_interop.rs @@ -23,8 +23,8 @@ use std::fs; use std::path::{Path, PathBuf}; -use crate::variant::{Variant, VariantMetadata}; use arrow_schema::ArrowError; +use parquet_variant::{Variant, VariantMetadata}; fn cases_dir() -> PathBuf { Path::new(env!("CARGO_MANIFEST_DIR")) @@ -42,15 +42,14 @@ fn load_case(name: &str) -> Result<(Vec, Vec), ArrowError> { fn get_primitive_cases() -> Vec<(&'static str, Variant<'static, 'static>)> { vec![ - ("primitive_boolean_false", Variant::BooleanFalse), - ("primitive_boolean_true", Variant::BooleanTrue), - ("primitive_int8", Variant::Int8(42)), - // Using the From trait - ("primitive_string", Variant::from("This string is longer than 64 bytes and therefore does not fit in a short_string and it also includes several non ascii characters such as 🐢, 💖, ♥\u{fe0f}, 🎣 and 🤦!!")), - // Using the From trait - ("short_string", Variant::from("Less than 64 bytes (❤\u{fe0f} with utf8)")), - // TODO Reenable when https://github.com/apache/parquet-testing/issues/81 is fixed - // ("primitive_null", Variant::Null), + ("primitive_null", Variant::Null), + ("primitive_boolean_false", Variant::BooleanFalse), + ("primitive_boolean_true", Variant::BooleanTrue), + ("primitive_int8", Variant::Int8(42)), + // Using the From trait + ("primitive_string", Variant::from("This string is longer than 64 bytes and therefore does not fit in a short_string and it also includes several non ascii characters such as 🐢, 💖, ♥\u{fe0f}, 🎣 and 🤦!!")), + // Using the From trait + ("short_string", Variant::from("Less than 64 bytes (❤\u{fe0f} with utf8)")), ] }