Fix pull_up_sublinks' failure to handle nested pull-up opportunities. After finding an EXISTS or ANY sub-select that can be converted to a semi-join or anti-join, we should recurse into the body of the sub-select. This allows cases such as EXISTS-within-EXISTS to be optimized properly. The original coding would leave the lower sub-select as a SubLink, which is no better and often worse than what we can do with a join. Per example from Wayne Conrad.
Back-patch to 8.4. There is a related issue in older versions' handling of pull_up_IN_clauses, but they're lame enough anyway about the whole area that it seems not worth the extra work to try to fix. Branch ------ REL8_4_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/f3f0f37068e06d01e88abbf3ed596664b139f7e2 Modified Files -------------- src/backend/optimizer/plan/subselect.c | 5 +++ src/backend/optimizer/prep/prepjointree.c | 41 ++++++++++++++++++++++++++-- 2 files changed, 43 insertions(+), 3 deletions(-) -- Sent via pgsql-committers mailing list ([email protected]) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-committers
