34. One or more non-transitory computer-readable storage media storing instructions which, when executed by one or more computing devices, cause: transforming a first query to a transformed query; wherein the first query includes: a first outer join of a first database object and a second database object, and a first join predicate that specifies a first condition of the first database object for the first outer join, wherein the first join predicate does not reference the second database object; wherein the transformed query does not include the first join predicate but does include: a second predicate that specifies a second condition of the first database object, wherein the second predicate references the second database object; wherein the transformed query is semantically equivalent to the first query; generating an execution plan for executing the transformed query instead of the first query.
34. One or more non-transitory computer-readable storage media storing instructions which, when executed by one or more computing devices, cause: transforming a first query to a transformed query; wherein the first query includes: a first outer join of a first database object and a second database object, and a first join predicate that specifies a first condition of the first database object for the first outer join, wherein the first join predicate does not reference the second database object; wherein the transformed query does not include the first join predicate but does include: a second predicate that specifies a second condition of the first database object, wherein the second predicate references the second database object; wherein the transformed query is semantically equivalent to the first query; generating an execution plan for executing the transformed query instead of the first query. 40. The one or more non-transitory computer-readable storage media of claim 34 , wherein the first join predicate references a column, wherein the first join predicate, if evaluated for the first outer join in the first query, would preserve, from a set of rows, rows for which the referenced column is null; wherein the first join predicate, if evaluated as a filter predicate for the first outer join in the first query, would eliminate, from a set of rows, rows for which the referenced column is null; and wherein the second predicate, if evaluated in the transformed query, would preserve, from a set of rows, rows for which the referenced column is null.