Re: pull-up subquery if JOIN-ON contains refs to upper-query
Ilia Evdokimov <ilya.evdokimov@tantorlabs.com>
From: Ilia Evdokimov <ilya.evdokimov@tantorlabs.com>
To: Alena Rybakina <a.rybakina@postgrespro.ru>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Cc: Ranier Vilela <ranier.vf@gmail.com>
Date: 2025-02-10T20:51:29Z
Lists: pgsql-hackers
Attachments
- regression.diffs (text/plain)
On 09.02.2025 18:14, Alena Rybakina wrote: > Hi! I found another example where the transformation worked > incorrectly and reconsidered the idea. > > As for conversion of exists_sublink_to_ANY, we need to get the > flattened implicit-AND list of clauses and pull out the chunks of the > WHERE clause that belong to the parent query, > since we are called halfway through the parent's > preprocess_expression() and earlier steps of preprocess_expression() > wouldn't get applied to the pulled-up stuff unless we do them here. > We also do some processing for vars depending on which side the var is > on - if it's in a subquery, we only need to lower its level (varlevel) > because subquery will be flatted, while > for other vars that belong to the parent query, we need to do > preparation to pull up the sub-select into top range table. > > For those expressions that we couldn't assign to either list, we > define newWhere and apply both cases. > When I run 'make -C contrib/ check', tests of postgres_fdw extension failed. I might be wrong, but you should be careful with LIMIT. -- Best regards, Ilia Evdokimov, Tantor Labs LLC.