Re: issue: nbtpage.c,_bt_pagedel may get wrong result
От | Heikki Linnakangas |
---|---|
Тема | Re: issue: nbtpage.c,_bt_pagedel may get wrong result |
Дата | |
Msg-id | 6abbe3cf-9763-4b9c-b3c7-0d0fc6e2c685@iki.fi обсуждение исходный текст |
Ответ на | issue: nbtpage.c,_bt_pagedel may get wrong result (Pengfei Wang <pengfei.wang@gmail.com>) |
Ответы |
Re: issue: nbtpage.c,_bt_pagedel may get wrong result
|
Список | pgsql-bugs |
On 23/05/2024 13:06, Pengfei Wang wrote: > # issue > https://github.com/postgres/postgres/blob/da32f5c4bca7f3447b869de2afbbfa0b74443d45/src/backend/access/nbtree/nbtpage.c#L1943 <https://github.com/postgres/postgres/blob/da32f5c4bca7f3447b869de2afbbfa0b74443d45/src/backend/access/nbtree/nbtpage.c#L1943> > > /* > * To avoid deadlocks, we'd better drop the leaf page lock > * before going further. > */ > _bt_unlockbuf(rel, leafbuf); > > /* > * Check that the left sibling of leafbuf (if any) is not > * marked with INCOMPLETE_SPLIT flag before proceeding > */ > Assert(leafblkno == scanblkno); > if (_bt_leftsib_splitflag(rel, leftsib, leafblkno)) > { > ReleaseBuffer(leafbuf); > return; > } > > After unlocking leaf, but before call _bt_leftsib_splitflag, leftsib may > be already split, and leafbuf's current left sibling is in > INCOMPLETE_SPLIT status. In that case, there should be a downlink for 'leafbuf' in the parent, and we're good to proceed, right? See the comments in _bt_leftsib_splitflag(). -- Heikki Linnakangas Neon (https://neon.tech)
В списке pgsql-bugs по дате отправления: