Re: postgres_fdw: wrong results with self join + enable_nestloop off
Etsuro Fujita <etsuro.fujita@gmail.com>
From: Etsuro Fujita <etsuro.fujita@gmail.com>
To: Nishant Sharma <nishant.sharma@enterprisedb.com>
Cc: Suraj Kharage <suraj.kharage@enterprisedb.com>,
Richard Guo <guofenglinux@gmail.com>, pgsql-hackers@postgresql.org
Date: 2023-06-05T13:19:31Z
Lists: pgsql-hackers
Attachments
- disallow-join-pushdown-if-pseudoconstants.patch (application/octet-stream) patch
Hi, On Fri, Jun 2, 2023 at 9:31 PM Nishant Sharma <nishant.sharma@enterprisedb.com> wrote: > I also agree that Richard's patch is better. As it fixes the issue at the backend and does not treat pseudoconstant as local condition. > > I have tested Richard's patch and observe that it is resolving the problem. Patch looks good to me as well. If the patch is intended for HEAD only, I also think it goes in the right direction. But if it is intended for back branches as well, I do not think so, because it would cause ABI breakage due to changes made to the ForeignPath struct and the create_foreign_join_path() API. (For the former, I think we could avoid doing so by adding the new member at the end of the struct, not in the middle, though.) To avoid this issue, I am wondering if we should modify add_paths_to_joinrel() in back branches so that it just disallows the FDW to consider pushing down joins when the restrictlist has pseudoconstant clauses. Attached is a patch for that. My apologies for not reviewing your patch and the long long delay. Best regards, Etsuro Fujita
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Re-allow FDWs and custom scan providers to replace joins with pseudoconstant quals.
- 9e9931d2bf40 17.0 landed
-
Disallow replacing joins with scans in problematic cases.
- db01f26968f2 11.21 landed
- 9edf72aa7644 12.16 landed
- 730f983effa5 13.12 landed
- b0e390e6d1d6 14.9 landed
- d1ef5631e620 15.4 landed
- 695f5deb7902 16.0 landed
- 6f80a8d9c137 17.0 landed
-
doc: PQinitOpenSSL and PQinitSSL are obsolete in OpenSSL 1.1.0+
- 928e05ddfd40 16.0 cited