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§impl Debug for ShreddingState
impl Debug for ShreddingState
§impl From<BorrowedShreddingState<'_>> for ShreddingState
impl From<BorrowedShreddingState<'_>> for ShreddingState
§fn from(state: BorrowedShreddingState<'_>) -> ShreddingState
fn from(state: BorrowedShreddingState<'_>) -> ShreddingState
§impl PartialEq for ShreddingState
impl PartialEq for ShreddingState
§impl TryFrom<&StructArray> for ShreddingState
impl TryFrom<&StructArray> for ShreddingState
impl StructuralPartialEq for ShreddingState
Auto Trait Implementations§
impl Freeze for ShreddingState
impl !RefUnwindSafe for ShreddingState
impl Send for ShreddingState
impl Sync for ShreddingState
impl Unpin for ShreddingState
impl !UnwindSafe for ShreddingState
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more