pub enum AggregationStrategy {
Hash,
Sort,
}Expand description
Aggregation strategy chosen based on estimated group-key cardinality.
When cardinality metadata is available from segment column statistics, the engine selects the strategy that minimises overhead:
- Hash: O(N) single-pass with FNV-1a hash table. Best for high cardinality (many distinct groups) where sort cost dominates.
- Sort: Sort on group-by columns via Arrow
sort_to_indices, then linear scan over contiguous runs. Best for low cardinality where the sort is cheap and avoids hash-table memory overhead. Produces sorted output — advantageous for downstream ORDER BY.
Variants§
Hash
FNV-1a hash-table grouping (default).
Sort
Sort group-by columns first, then linear-scan contiguous runs.
Trait Implementations§
Source§impl Clone for AggregationStrategy
impl Clone for AggregationStrategy
Source§fn clone(&self) -> AggregationStrategy
fn clone(&self) -> AggregationStrategy
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for AggregationStrategy
Source§impl Debug for AggregationStrategy
impl Debug for AggregationStrategy
impl Eq for AggregationStrategy
Source§impl PartialEq for AggregationStrategy
impl PartialEq for AggregationStrategy
impl StructuralPartialEq for AggregationStrategy
Auto Trait Implementations§
impl Freeze for AggregationStrategy
impl RefUnwindSafe for AggregationStrategy
impl Send for AggregationStrategy
impl Sync for AggregationStrategy
impl Unpin for AggregationStrategy
impl UnsafeUnpin for AggregationStrategy
impl UnwindSafe for AggregationStrategy
Blanket Implementations§
impl<T> Allocation for T
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
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> ⓘ
Converts
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> ⓘ
Converts
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