Re: Revert: Remove useless self-joins *and* -DREALLOCATE_BITMAPSETS make server crash, regress test fail.
От | David Rowley |
---|---|
Тема | Re: Revert: Remove useless self-joins *and* -DREALLOCATE_BITMAPSETS make server crash, regress test fail. |
Дата | |
Msg-id | CAApHDvpY_+TfhdH8g85A68OU3JZ6vL5QF5nYUAQUmKGzgWK+-w@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Revert: Remove useless self-joins *and* -DREALLOCATE_BITMAPSETS make server crash, regress test fail. (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Revert: Remove useless self-joins *and* -DREALLOCATE_BITMAPSETS make server crash, regress test fail.
|
Список | pgsql-hackers |
On Tue, 7 May 2024 at 17:01, Tom Lane <tgl@sss.pgh.pa.us> wrote: > > Richard Guo <guofenglinux@gmail.com> writes: > > Thank you for the report. I looked at this a little bit and I think > > here is what happened. In deconstruct_distribute_oj_quals we call > > distribute_quals_to_rels using the uncopied sjinfo->syn_lefthand as > > outerjoin_nonnullable, which eventually becomes rinfo->outer_relids. > > Later on, when we remove useless left joins, we modify > > sjinfo->syn_lefthand using bms_del_member and recycle > > sjinfo->syn_lefthand. And that causes the rinfo->outer_relids becomes > > invalid, and finally triggers this issue in join_clause_is_movable_to. > > Hmm, the SJE code didn't really touch any of this logic, so why > didn't we see the failure before? The bms_free() occurs in remove_rel_from_query() on: sjinf->syn_lefthand = bms_del_member(sjinf->syn_lefthand, relid); I've not looked, but I assumed the revert must have removed some common code that was added and reverted with SJE. David
В списке pgsql-hackers по дате отправления: