Skip to main content

eliminate_full_outer_join

Function eliminate_full_outer_join 

Source
pub fn eliminate_full_outer_join(expr: Expression) -> Result<Expression>
Expand description

Convert FULL OUTER JOIN to a UNION of LEFT and RIGHT OUTER joins.

For dialects that don’t support FULL OUTER JOIN, this converts:

SELECT * FROM a FULL OUTER JOIN b ON a.x = b.x

To:

SELECT * FROM a LEFT OUTER JOIN b ON a.x = b.x
UNION ALL
SELECT * FROM a RIGHT OUTER JOIN b ON a.x = b.x
WHERE NOT EXISTS (SELECT 1 FROM a WHERE a.x = b.x)

Note: This transformation currently only works for queries with a single FULL OUTER join.

Reference: transforms.py:624-661