Unnesting Arbitrary Queries.
Outerjoin simplification and reordering for query optimization