Re: Revert: Remove useless self-joins *and* -DREALLOCATE_BITMAPSETS make server crash, regress test fail.
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: David Rowley <dgrowleyml@gmail.com>, Andrew Dunstan <andrew@dunslane.net>, jian he <jian.universality@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2024-05-09T02:43:31Z
Lists: pgsql-hackers
On Thu, May 9, 2024 at 6:40 AM Tom Lane <tgl@sss.pgh.pa.us> wrote: > David Rowley <dgrowleyml@gmail.com> writes: > > I'm fine with this one as it's the same as what I already mentioned > > earlier. I had imagined doing bms_del_member(bms_copy ... but maybe > > the compiler is able to optimise away the additional store. Likely, it > > does not matter much as pallocing memory likely adds far more overhead > > anyway. > > I actually wrote it that way to start with, but undid it after > noticing that the existing code in remove_rel_from_restrictinfo > does it in separate steps, and thinking that that was good for > both separation of concerns and a cleaner git history. I too > can't believe that an extra fetch will be noticeable compared > to the cost of the adjacent bms_xxx operations. I also think it seems better to do bms_copy in separate steps, not only because this keeps consistent with the existing code in remove_rel_from_restrictinfo, but also because we need to do bms_del_member twice for each lefthand/righthand relid set. Speaking of consistency, do you think it would improve the code's readability if we rearrange the code in remove_rel_from_query so that the modifications of the same relid set are grouped together, just like what we do in remove_rel_from_restrictinfo? I mean something like: sjinf->min_lefthand = bms_copy(sjinf->min_lefthand); sjinf->min_lefthand = bms_del_member(sjinf->min_lefthand, relid); sjinf->min_lefthand = bms_del_member(sjinf->min_lefthand, ojrelid); ... Thanks Richard
Commits
-
Make left-join removal safe under -DREALLOCATE_BITMAPSETS.
- c7be3c015bfe 17.0 landed
-
Revert: Remove useless self-joins
- d1d286d83c0e 17.0 cited
-
Remove mention of nchar
- 81b2252e609c 17.0 cited