Re: Add semi-join pushdown to postgres_fdw

Alexander Pyhalov <a.pyhalov@postgrespro.ru>

From: Alexander Pyhalov <a.pyhalov@postgrespro.ru>
To: Alexander Korotkov <aekorotkov@gmail.com>
Cc: Robins Tharakan <tharakan@gmail.com>, Tomas Vondra <tomas.vondra@enterprisedb.com>, "Fujii.Yuki@df.MitsubishiElectric.co.jp" <Fujii.Yuki@df.mitsubishielectric.co.jp>, Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Pgsql Hackers <pgsql-hackers@postgresql.org>, Ian Lawrence Barwick <barwick@gmail.com>, tndrwang@gmail.com
Date: 2025-03-18T11:13:56Z
Lists: pgsql-hackers

Attachments

Alexander Korotkov писал(а) 2025-03-18 03:27:
> Hi, Robins!
> 
> On Tue, Mar 18, 2025 at 2:20 AM Robins Tharakan <tharakan@gmail.com> 
> wrote:
>> On Mon, 4 Dec 2023 at 07:22, Alexander Korotkov <aekorotkov@gmail.com> 
>> wrote:
>> >
>> >
>> > Now, I think this looks good.  I'm going to push this if no objections.
>> 
>> After this commit, I began seeing an unexpected ERROR - see this 
>> bug-report.
>> https://www.postgresql.org/message-id/18852-fb75b88160678f78%40postgresql.org
> 
> Thank you for pointing.
> I'll check this in the next couple of days.
> 

Hi.
It seems conditions, coming from semi-joins, are handled incorrectly 
under left and right join. When deparsing left/right joins and there are 
semi-joins in inner or outer part of the query, the corresponding part 
is deparsed as subquery. And we can't refer subquery vars from above, so 
just should not pull up the restrictinfos. The attached patch does 
exactly this.
-- 
Best regards,
Alexander Pyhalov,
Postgres Professional