pub struct ShreddingState {
value: Option<BinaryViewArray>,
typed_value: Option<ArrayRef>,
}
Expand description
Represents the shredding state of a VariantArray
VariantArray
s can be shredded according to the Parquet Variant
Shredding Spec. Shredding means that the actual value is stored in a typed
typed_field
instead of the generic value
field.
Both value and typed_value are optional fields used together to encode a single value. Values in the two fields must be interpreted according to the following table (see Parquet Variant Shredding Spec for more details):
value | typed_value | Meaning |
---|---|---|
NULL | NULL | The value is missing; only valid for shredded object fields |
non-NULL | NULL | The value is present and may be any type, including [Variant::Null ] |
NULL | non-NULL | The value is present and is the shredded type |
non-NULL | non-NULL | The value is present and is a partially shredded object |
Applying the above rules to entire columns, we obtain the following:
value | typed_value | Meaning |
---|---|---|
– | – | Missing: The value is always missing; only valid for shredded object fields |
exists | – | Unshredded: If present, the value may be any type, including [Variant::Null ] |
– | exists | Perfectly shredded: If present, the value is always the shredded type |
exists | exists | Imperfectly shredded: The value might (not) be present and might (not) be the shredded type |
NOTE: Partial shredding is a row-wise situation that can arise under imperfect shredding (a column-wise situation): When both columns exist (imperfect shredding) and the typed_value column is a struct, then both columns can be non-NULL for the same row if value is a variant object (partial shredding).
Fields§
§value: Option<BinaryViewArray>
§typed_value: Option<ArrayRef>
Implementations§
Source§impl ShreddingState
impl ShreddingState
Sourcepub fn new(
value: Option<BinaryViewArray>,
typed_value: Option<ArrayRef>,
) -> Self
pub fn new( value: Option<BinaryViewArray>, typed_value: Option<ArrayRef>, ) -> Self
Create a new ShreddingState
from the given value
and typed_value
fields
Note you can create a ShreddingState
from a &[StructArray
] using
ShreddingState::try_from(&struct_array)
, for example:
let struct_array: StructArray = get_struct_array();
let shredding_state = ShreddingState::try_from(&struct_array).unwrap();
Sourcepub fn value_field(&self) -> Option<&BinaryViewArray>
pub fn value_field(&self) -> Option<&BinaryViewArray>
Return a reference to the value field, if present
Sourcepub fn typed_value_field(&self) -> Option<&ArrayRef>
pub fn typed_value_field(&self) -> Option<&ArrayRef>
Return a reference to the typed_value field, if present
Sourcepub fn borrow(&self) -> BorrowedShreddingState<'_>
pub fn borrow(&self) -> BorrowedShreddingState<'_>
Returns a borrowed version of this shredding state
Trait Implementations§
Source§impl Clone for ShreddingState
impl Clone for ShreddingState
Source§fn clone(&self) -> ShreddingState
fn clone(&self) -> ShreddingState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more