pub enum PlanStrategy {
PureSize,
MinCover,
Gj,
}Expand description
The algorithm used to produce a join plan.
Variants§
PureSize
Free Join: Iteratively pick the smallest atom as the cover for the next stage, until all subatoms have been visited.
MinCover
Free Join: Pick an approximate minimal set of covers, then order those covers in increasing order of size.
This is similar to PureSize but we first limit the potential atoms that can act as covers so as to minimize the total number of stages in the plan. This is only an approximate minimum: the problem of finding the exact minimum (“set cover”) is NP-hard.
Gj
Generate a plan for the classic Generic Join algorithm, constraining a single variable per stage.
Trait Implementations§
Source§impl Clone for PlanStrategy
impl Clone for PlanStrategy
Source§fn clone(&self) -> PlanStrategy
fn clone(&self) -> PlanStrategy
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 moreSource§impl Default for PlanStrategy
impl Default for PlanStrategy
Source§fn default() -> PlanStrategy
fn default() -> PlanStrategy
Returns the “default value” for a type. Read more
impl Copy for PlanStrategy
Auto Trait Implementations§
impl Freeze for PlanStrategy
impl RefUnwindSafe for PlanStrategy
impl Send for PlanStrategy
impl Sync for PlanStrategy
impl Unpin for PlanStrategy
impl UnwindSafe for PlanStrategy
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> 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