pub struct EliminateJoin;Expand description
Rewrites an inner join to a semi join when one input only filters the other, removes an outer join whose non-preserved side is unused and cannot multiply the preserved side’s rows, and replaces an always-false inner join with an empty relation.
Implementations§
Source§impl EliminateJoin
impl EliminateJoin
Trait Implementations§
Source§impl Debug for EliminateJoin
impl Debug for EliminateJoin
Source§impl Default for EliminateJoin
impl Default for EliminateJoin
Source§fn default() -> EliminateJoin
fn default() -> EliminateJoin
Returns the “default value” for a type. Read more
Source§impl OptimizerRule for EliminateJoin
impl OptimizerRule for EliminateJoin
Source§fn rewrite(
&self,
plan: LogicalPlan,
_config: &dyn OptimizerConfig,
) -> Result<Transformed<LogicalPlan>>
fn rewrite( &self, plan: LogicalPlan, _config: &dyn OptimizerConfig, ) -> Result<Transformed<LogicalPlan>>
Try to rewrite
plan to an optimized form, returning Transformed::yes
if the plan was rewritten and Transformed::no if it was not. Read moreSource§fn apply_order(&self) -> Option<ApplyOrder>
fn apply_order(&self) -> Option<ApplyOrder>
How should the rule be applied by the optimizer? See comments on
ApplyOrder for details. Read moreSource§fn supports_rewrite(&self) -> bool
fn supports_rewrite(&self) -> bool
👎Deprecated since 47.0.0:
This method is no longer used
Does this rule support rewriting owned plans (rather than by reference)?
Auto Trait Implementations§
impl Freeze for EliminateJoin
impl RefUnwindSafe for EliminateJoin
impl Send for EliminateJoin
impl Sync for EliminateJoin
impl Unpin for EliminateJoin
impl UnsafeUnpin for EliminateJoin
impl UnwindSafe for EliminateJoin
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
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