Details
-
Improvement
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
As pointed out by ashutoshc here: https://reviews.apache.org/r/14953/
For the following query
select p1.name, p2.name, p3.name from part p1 join p2 on p1.name = p2.name and p1.key = p2.key join part p3 on p1.name = p3.name
2 jobs are generated:
- p1 join p2 on name, key
- join p3 on name
This can be done as:
- 1 3-way join of p1,p2,p3 on name
- followed by a Filter on p1.key = p2.key
This is valid only for inner joins.
This can be done by extending the Merge Join logic to check for a subset relation between 2 QBJoinTree expression lists.