| From: | Tender Wang <tndrwang(at)gmail(dot)com> |
|---|---|
| To: | SATYANARAYANA NARLAPURAM <satyanarlapuram(at)gmail(dot)com> |
| Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
| Subject: | Re: Discarded adjust_relid_set() return values in remove_self_join_rel |
| Date: | 2026-04-25 07:53:31 |
| Message-ID: | CAHewXNnFeWk6oLm39rCS4YvZg8x_hFOzz1XDDXXK+VB6Up0Qtw@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi,
SATYANARAYANA NARLAPURAM <satyanarlapuram(at)gmail(dot)com> 于2026年4月25日周六 15:44写道:
>
> Hi hackers,
>
> I found that remove_self_join_rel() in analyzejoins.c discards the
> return values of two adjust_relid_set() calls when updating
> root->all_result_relids and root->leaf_result_relids:
>
> adjust_relid_set(root->all_result_relids, toRemove->relid, toKeep->relid);
> adjust_relid_set(root->leaf_result_relids, toRemove->relid, toKeep->relid);
>
> adjust_relid_set() does not modify its input in-place. When it finds
> the old relid in the set, it calls bms_copy() to create a new
> Bitmapset, performs the substitution on the copy, and returns the new
> pointer. Without capturing the return value, the original sets are
> never updated. Every other call site in the file analyzejoins.c correctly
> assigns the return value.
>
> I am not able to craft a query to show it as a problem.
> For the current release, these two lines appears to be a no-op?
>
> Attached a patch to assign the returned values.
The topic in [1] seems to be the same issue as your report.
You can take a look at [1] to double-check.
[1] https://www.postgresql.org/message-id/CAMbWs49fYQcqJfJ_Gtn8r1GFNoYtb1%3D2AUab4ieuqY4Zid9ocQ%40mail.gmail.com
(Sorry for not adding pgsql-hackers mail in the last email)
--
Thanks,
Tender Wang
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Daniil Davydov | 2026-04-25 08:34:22 | Re: Fix bug with accessing to temporary tables of other sessions |
| Previous Message | SATYANARAYANA NARLAPURAM | 2026-04-25 07:44:01 | Discarded adjust_relid_set() return values in remove_self_join_rel |