How to extend a conventional optimizer to handle one- and two-sided outerjoin

The authors provide a nearly complete theory for reordering join/outerjoin queries. The theory is used to describe modular extensions that strengthen a conventional optimizer to handle nearly all select/project/join/outerjoin queries. Unlike previous work, these results are not limited to queries possessing a nice structure, or queries that are nicely represented in relational calculus. The theoretical results concern query simplification and reassociation using a generalized outerjoin.<<ETX>>