Skip to content

Optimizer: push down predicate inferred by hash join equal condition #8376

@yuhao-su

Description

@yuhao-su

For queries like select * from a, b on a.x = b.x and a.y = b.x, we can push down a filter before side a with condition a.x=a.y and only keep one of the two join condition in hash join executor.

Such optimization can apply to almost all kinds of hash join with the exception of anti-join.

For anti-join we can not push down a filter or keep let join key. Instead, we need to evaluate the predicate in hash join executor. If a.x=a.y is false, we know the join condition a.x = b.x and a.y = b.x is false.

This can also solve the #7698

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions