Struct ShreddingState
pub struct ShreddingState {
value: Option<GenericByteViewArray<BinaryViewType>>,
typed_value: Option<Arc<dyn Array>>,
}Expand description
Represents the shredding state of a VariantArray
VariantArrays 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<GenericByteViewArray<BinaryViewType>>§typed_value: Option<Arc<dyn Array>>Implementations§
§impl ShreddingState
impl ShreddingState
pub fn new(
value: Option<GenericByteViewArray<BinaryViewType>>,
typed_value: Option<Arc<dyn Array>>,
) -> ShreddingState
pub fn new( value: Option<GenericByteViewArray<BinaryViewType>>, typed_value: Option<Arc<dyn Array>>, ) -> ShreddingState
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();pub fn value_field(&self) -> Option<&GenericByteViewArray<BinaryViewType>>
pub fn value_field(&self) -> Option<&GenericByteViewArray<BinaryViewType>>
Return a reference to the value field, if present
pub fn typed_value_field(&self) -> Option<&Arc<dyn Array>>
pub fn typed_value_field(&self) -> Option<&Arc<dyn Array>>
Return a reference to the typed_value field, if present
pub fn borrow(&self) -> BorrowedShreddingState<'_>
pub fn borrow(&self) -> BorrowedShreddingState<'_>
Returns a borrowed version of this shredding state
pub fn slice(&self, offset: usize, length: usize) -> ShreddingState
pub fn slice(&self, offset: usize, length: usize) -> ShreddingState
Slice all the underlying arrays
Trait Implementations§
§impl Clone for ShreddingState
impl Clone for ShreddingState
§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