Re: 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-08-10T07:24:28Z
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 →
  1. Support "Right Semi Join" plan shapes

  2. Fix neqjoinsel's behavior for semi/anti join cases.

Attachments

On Tue, Apr 18, 2023 at 5:07 PM Richard Guo <guofenglinux@gmail.com> wrote:

> 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.
>

The cfbot reminds that this patch does not apply any more, so rebase it
to v2.

Thanks
Richard