From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Jim Nasby <jim(at)nasby(dot)net> |
Cc: | Pg Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Optimizer regression |
Date: | 2012-10-13 19:45:47 |
Message-ID: | 18903.1350157547@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Jim Nasby <jim(at)nasby(dot)net> writes:
> Just upgraded to 8.4 (I know, I know) and ran across this. Unfortunately I have no way to test this on 9.x, so I don't know if it's been fixed or not. I'm hoping that someone *cough*Tom*cough* would quickly recognize whether this push into subquery issue has been fixed or not, so I haven't included full details or a test case. I have a work-around so I don't care about this in 8.4, but if this regression still exists it would be nice if it were fixed.
It's hard to be sure with such an incomplete example, but I think 8.4 is
flattening the EXISTS to a semijoin and then getting trapped by join
order constraints into doing something less than optimal for this
particular use-case. It was this type of example that motivated the
"parameterized path" stuff I've been working on for the past couple
of years.
In short, 9.2 should produce at least as good a plan as 8.3 for this
example, but 8.4 through 9.1 might not.
BTW, your workaround looks wrong --- you need to constrain the outside
of the left join not the inside, no?
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Joshua Berkus | 2012-10-13 19:49:51 | Re: Potential autovacuum optimization: new tables |
Previous Message | Phil Sorber | 2012-10-13 19:28:01 | Re: getopt() and strdup() |