Support "Right Semi Join" plan shapes
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2023-04-18T09:07:34Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Support "Right Semi Join" plan shapes
- aa86129e19d7 18.0 landed
-
Fix neqjoinsel's behavior for semi/anti join cases.
- 7ca25b7de6ae 11.0 cited
Attachments
- v1-0001-Support-Right-Semi-Join-plan-shapes.patch (application/octet-stream) patch v1-0001
In thread [1] which discussed 'Right Anti Join', Tom once mentioned 'Right Semi Join'. After a preliminary investigation I think it is beneficial and can be implemented with very short change. With 'Right Semi Join', what we want to do is to just have the first match for each inner tuple. For HashJoin, after scanning the hash bucket for matches to current outer, we just need to check whether the inner tuple has been set match and skip it if so. For MergeJoin, we can do it by avoiding restoring inner scan to the marked tuple in EXEC_MJ_TESTOUTER, in the case when new outer tuple == marked tuple. As that thread is already too long, fork a new thread and attach a patch used for discussion. The patch implements 'Right Semi Join' for HashJoin. [1] https://www.postgresql.org/message-id/CAMbWs4_eChX1bN%3Dvj0Uzg_7iz9Uivan%2BWjjor-X87L-V27A%2Brw%40mail.gmail.com Thanks Richard