pub struct ArrowBytesViewMap<V>{ /* private fields */ }Expand description
Optimized map for storing Arrow “byte view” types (StringView, BinaryView)
values that can produce the set of keys on
output as GenericBinaryViewArray without copies.
Equivalent to HashSet<String, V> but with better performance if you need
to emit the keys as an Arrow StringViewArray / BinaryViewArray. For other
purposes it is the same as a HashMap<String, V>
§Generic Arguments
V: payload type
§Description
This is a specialized HashMap with the following properties:
-
Optimized for storing and emitting Arrow byte types (e.g.
StringViewArray/BinaryViewArray) very efficiently by minimizing copying of the string values themselves, both when inserting and when emitting the final array. -
Retains the insertion order of entries in the final array. The values are in the same order as they were inserted.
Note this structure can be used as a HashSet by specifying the value type
as (), as is done by ArrowBytesViewSet.
This map is used by the special COUNT DISTINCT aggregate function to
store the distinct values, and by the GROUP BY operator to store
group values when they are a single string array.
Implementations§
Source§impl<V> ArrowBytesViewMap<V>
impl<V> ArrowBytesViewMap<V>
pub fn new(output_type: OutputType) -> Self
Sourcepub fn take(&mut self) -> Self
pub fn take(&mut self) -> Self
Return the contents of this map and replace it with a new empty map with the same output type
Sourcepub fn insert_if_new<MP, OP>(
&mut self,
values: &ArrayRef,
make_payload_fn: MP,
observe_payload_fn: OP,
)
pub fn insert_if_new<MP, OP>( &mut self, values: &ArrayRef, make_payload_fn: MP, observe_payload_fn: OP, )
Inserts each value from values into the map, invoking payload_fn for
each value if not already present, deferring the allocation of the
payload until it is needed.
Note that this is different than a normal map that would replace the existing entry
§Arguments:
values: array whose values are inserted
make_payload_fn: invoked for each value that is not already present
to create the payload, in order of the values in values
observe_payload_fn: invoked once, for each value in values, that was
already present in the map, with corresponding payload value.
§Returns
The payload value for the entry, either the existing value or the newly inserted value
§Safety:
Note that make_payload_fn and observe_payload_fn are only invoked
with valid values from values, not for the NULL value.
Sourcepub fn into_state(self) -> ArrayRef
pub fn into_state(self) -> ArrayRef
Converts this set into a StringViewArray, or BinaryViewArray,
containing each distinct value
that was inserted. This is done without copying the values.
The values are guaranteed to be returned in the same order in which they were first seen.
Sourcepub fn non_null_len(&self) -> usize
pub fn non_null_len(&self) -> usize
Number of non null entries
Trait Implementations§
Auto Trait Implementations§
impl<V> Freeze for ArrowBytesViewMap<V>where
V: Freeze,
impl<V> RefUnwindSafe for ArrowBytesViewMap<V>where
V: RefUnwindSafe,
impl<V> Send for ArrowBytesViewMap<V>where
V: Send,
impl<V> Sync for ArrowBytesViewMap<V>where
V: Sync,
impl<V> Unpin for ArrowBytesViewMap<V>where
V: Unpin,
impl<V> UnwindSafe for ArrowBytesViewMap<V>where
V: UnwindSafe,
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> 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