"Brad Jorsch" <programmer@protech1inc.com> writes:
> But if I add a constant-valued column to indicate which branch of the
> union each result came from:
> explain analyze select * from baz join (
> select id, val, 'foo'::text as source from foo
> union all
> select id, val, 'bar'::text as source from bar
> ) as foobar on(baz.id2=foobar.id) where baz.id1=42;
> All of a sudden it insists on a sequential scan (and takes 800 times as
> long to run) even when enable_seqscan is set false. Is there a good
> reason for this, or is it just a missed opportunity in the optimizer?
It's an ancient and fundamental limitation that is fixed in 8.4.
Do not expect to see it fixed in 8.3.x.
regards, tom lane