]> granicus.if.org Git - postgresql/commit
Fix another semijoin-ordering bug. We already knew that we couldn't
authorTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Jul 2009 02:02:44 +0000 (02:02 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Tue, 21 Jul 2009 02:02:44 +0000 (02:02 +0000)
commitb2c51e6eba1d8b3b139c529df3703b37952b5a3d
tree2e9e2608110c59fd75094ad1998f0e65c1b46fac
parent4e03b827eed0a04291657970c5796001a07fdf57
Fix another semijoin-ordering bug.  We already knew that we couldn't
reorder a semijoin into or out of the righthand side of another semijoin,
but actually it doesn't work to reorder it into or out of the righthand
side of a left or antijoin, either.  Per bug #4906 from Mathieu Fenniak.

This was sloppy thinking on my part.  This identity does work:

( A left join B on (Pab) ) semijoin C on (Pac)
==
( A semijoin C on (Pac) ) left join B on (Pab)

but I failed to see that that doesn't mean this does:

( A left join B on (Pab) ) semijoin C on (Pbc)
!=
A left join ( B semijoin C on (Pbc) ) on (Pab)
src/backend/optimizer/README
src/backend/optimizer/plan/initsplan.c