Modifying subquery nesting

If you modify the attachment point for a subquery, you must choose a point at which all of the correlation columns are available.This query is correlated to both of the tables in the outer query:

select * 
from t1, t2, t3
where c12 = 0
    and c11 = c21
    and c22 = c32
    and 0 < (select c31 from t3 where c31 = t1.c11
                    and c32 = t2.c22)

This plan uses the join order t1, t2, t3, with the subquery nested over the t1-t2 join:

( g_join 
    ( nested 
        ( g_join 
            ( i_scan i_c11_c12 t1 ) 
            ( i_scan i_c22 t2 ) 
        ) 
        ( subq 1 
            ( t_scan ( table t3 ( in (subq 1 ) ) ) ) 
        ) 
    )
    ( i_scan i_c32 t3 ) 
) 

Since the subquery requires columns from both outer tables, it would be incorrect to nest it over the scan of t1 or the scan of t2; such errors are silently corrected during optimization.