Re: The bogus calls in remove_self_join_rel()

Andrei Lepikhov <lepihov@gmail.com>

From: Andrei Lepikhov <lepihov@gmail.com>
To: Richard Guo <guofenglinux@gmail.com>, Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-23T08:11:06Z
Lists: pgsql-hackers
On 23/04/2026 04:45, Richard Guo wrote:
> I noticed these two calls in remove_self_join_rel():
> 
>     adjust_relid_set(root->all_result_relids, toRemove->relid, toKeep->relid);
>     adjust_relid_set(root->leaf_result_relids, toRemove->relid, toKeep->relid);
> 
> There's no comment explaining them, and as far as I can tell they do
> nothing: adjust_relid_set returns a Relids and does not modify the
> input in place.
There is a clear history of these calls. When designing SJE, we initially
applied it to partitioned tables. Later, we realised complicated issues arise
when SJE meets DML, the RETURNING clause, and partitioned tables. So, we reduced
the feature for some time. I guess the core code's stability has been proven
enough by PG18. We may introduce SJE over partitioned tables in the next release.

You can probably remove these calls for now. Just make sure to add assertions to
help with developing the partitioned case.

-- 
regards, Andrei Lepikhov,
pgEdge



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix bogus calls in remove_self_join_rel()