Struct ShreddingState
pub struct ShreddingState {
value: Option<GenericByteViewArray<BinaryViewType>>,
typed_value: Option<Arc<dyn Array>>,
}
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<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 TryFrom<&StructArray> for ShreddingState
impl TryFrom<&StructArray> 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