On 10/31/2013 03:46 PM, Antonin Houska wrote:
> Can the change be as simple as this or do I neglect anything?

Well, the example of outer join is wrong. Instead I think query

SELECT *
FROM    tab1 a
        LEFT JOIN
        tab1 b
        ON b.i = ANY (
                SELECT  tab2.k
                FROM    tab2
                WHERE   k = a.j);


should be converted to

SELECT  *
FROM    tab1 a
        LEFT JOIN
        (  tab1 b
           LATERAL SEMI JOIN
           (  SELECT  tab2.k
              FROM      tab2
              WHERE     k = a.j
           ) AS ANY_subquery
           ON b.i = sub.k
        )
        
I'm not sure if it's legal for the WHERE clause to reference LHS of the
original outer join (a.j). Some more restriction may be needed. I need
to think about it a bit more.

// Tony



-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to