Mattias Kregert <mattias(at)kregert(dot)se> writes:
> Why does it come up with this strange plan?
Because 8.1 can't reorder outer joins. To devise the plan you want,
the planner has to be able to prove that it's OK to perform the IN join
before the LEFT join, something that isn't always the case. 8.2 can
prove this, but no existing release can.
The only workaround I can think of is to do the IN in a sub-select.
regards, tom lane