pub struct MultiWayJoinOp {
pub inputs: Vec<LogicalOperator>,
pub conditions: Vec<JoinCondition>,
pub shared_variables: Vec<String>,
}Expand description
Multi-way join for worst-case optimal joins (leapfrog).
Unlike binary JoinOp, this joins 3+ relations simultaneously
using the leapfrog trie join algorithm. Preferred for cyclic patterns
(triangles, cliques) where cascading binary joins hit O(N^2).
Fields§
§inputs: Vec<LogicalOperator>Input relations (one per relation in the join).
conditions: Vec<JoinCondition>All pairwise join conditions.
Variables shared across multiple inputs (intersection keys).
Trait Implementations§
Source§impl Clone for MultiWayJoinOp
impl Clone for MultiWayJoinOp
Source§fn clone(&self) -> MultiWayJoinOp
fn clone(&self) -> MultiWayJoinOp
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for MultiWayJoinOp
impl RefUnwindSafe for MultiWayJoinOp
impl Send for MultiWayJoinOp
impl Sync for MultiWayJoinOp
impl Unpin for MultiWayJoinOp
impl UnsafeUnpin for MultiWayJoinOp
impl UnwindSafe for MultiWayJoinOp
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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