pub struct MultiWayStreamMerge { /* private fields */ }Expand description
Multi-way streaming merge of multiple spill files.
Reads N spill files + one optional in-memory buffer, merges them in sort-key order (ascending), and optionally deduplicates by primary key.
Implementations§
Source§impl MultiWayStreamMerge
impl MultiWayStreamMerge
Sourcepub fn new(
spill_files: &[SpillFile],
in_memory: Option<Vec<Vec<Value>>>,
sort_key_col: usize,
dedup: bool,
) -> Result<Self, StorageError>
pub fn new( spill_files: &[SpillFile], in_memory: Option<Vec<Vec<Value>>>, sort_key_col: usize, dedup: bool, ) -> Result<Self, StorageError>
Create a new multi-way stream merge.
spill_files— list of spill files to read from disk.in_memory— optional final in-memory buffer (rows asVec<Vec<Value>>).sort_key_col— column index to use as the sort/merge key.dedup— if true, consecutive duplicate sort keys are skipped.
Sourcepub fn next_tuple(&mut self) -> Option<Vec<Value>>
pub fn next_tuple(&mut self) -> Option<Vec<Value>>
Get the next row from the merge.
Returns None when all sources are exhausted.
Auto Trait Implementations§
impl Freeze for MultiWayStreamMerge
impl RefUnwindSafe for MultiWayStreamMerge
impl Send for MultiWayStreamMerge
impl Sync for MultiWayStreamMerge
impl Unpin for MultiWayStreamMerge
impl UnsafeUnpin for MultiWayStreamMerge
impl UnwindSafe for MultiWayStreamMerge
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> 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