pub struct UnionParallelExecutor;Expand description
Executes independent SPARQL union branches in parallel and merges results.
Uses rayon for data-parallelism across branches. Deduplication uses the
canonical string key of each BindingMap.
Implementations§
Source§impl UnionParallelExecutor
impl UnionParallelExecutor
Sourcepub fn execute_branches(branches: Vec<Vec<BindingMap>>) -> Vec<BindingMap>
pub fn execute_branches(branches: Vec<Vec<BindingMap>>) -> Vec<BindingMap>
Execute multiple pre-computed branches (each a Vec<BindingMap>) in
parallel and merge the results.
Duplicates are removed using the canonical string representation of each
BindingMap as the deduplication key.
Sourcepub fn execute_optional(
main: Vec<BindingMap>,
optional: Vec<BindingMap>,
) -> Vec<BindingMap>
pub fn execute_optional( main: Vec<BindingMap>, optional: Vec<BindingMap>, ) -> Vec<BindingMap>
Compute the LEFT OUTER JOIN (OPTIONAL) of main rows with optional rows.
For each row in main:
- If there is at least one compatible row in
optional, emit all compatible merged rows. - Otherwise, emit the
mainrow unchanged (preserving LEFT JOIN semantics).
Sourcepub fn dedup(rows: Vec<BindingMap>) -> Vec<BindingMap>
pub fn dedup(rows: Vec<BindingMap>) -> Vec<BindingMap>
Remove duplicate binding maps by canonical key.
Auto Trait Implementations§
impl Freeze for UnionParallelExecutor
impl RefUnwindSafe for UnionParallelExecutor
impl Send for UnionParallelExecutor
impl Sync for UnionParallelExecutor
impl Unpin for UnionParallelExecutor
impl UnsafeUnpin for UnionParallelExecutor
impl UnwindSafe for UnionParallelExecutor
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> 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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.