pub struct EliminateCrossJoin;Implementations§
Trait Implementations§
source§impl Default for EliminateCrossJoin
impl Default for EliminateCrossJoin
source§fn default() -> EliminateCrossJoin
fn default() -> EliminateCrossJoin
Returns the “default value” for a type. Read more
source§impl OptimizerRule for EliminateCrossJoin
impl OptimizerRule for EliminateCrossJoin
Attempt to reorder join tp eliminate cross joins to inner joins. for queries: ‘select … from a, b where a.x = b.y and b.xx = 100;’ ‘select … from a, b where (a.x = b.y and b.xx = 100) or (a.x = b.y and b.xx = 200);’ ‘select … from a, b, c where (a.x = b.y and b.xx = 100 and a.z = c.z) or (a.x = b.y and b.xx = 200 and a.z=c.z);’ For above queries, the join predicate is available in filters and they are moved to join nodes appropriately This fix helps to improve the performance of TPCH Q19. issue#78
source§fn try_optimize(
&self,
plan: &LogicalPlan,
config: &dyn OptimizerConfig
) -> Result<Option<LogicalPlan>>
fn try_optimize(
&self,
plan: &LogicalPlan,
config: &dyn OptimizerConfig
) -> Result<Option<LogicalPlan>>
Try and rewrite
plan to an optimized form, returning None if the plan cannot be
optimized by this rule.source§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 more