Re: issue: nbtpage.c,_bt_pagedel may get wrong result

From: Pengfei Wang <pengfei(dot)wang(at)gmail(dot)com>
To: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
Cc: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: issue: nbtpage.c,_bt_pagedel may get wrong result
Date: 2024-05-27 13:51:22
Message-ID: CALsf3S0uAtkY8kAVkqxjA6-Z3e3vGJpTm7sBO1a__Gw-quc_gg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Yes, you are right. I've checked _bt_leftsib_splitflag, it checks if the
right sibling of 'leftisb' is till leafbuf.

Thank you for your explanation.

On Thu, May 23, 2024 at 7:13 PM Heikki Linnakangas <hlinnaka(at)iki(dot)fi> wrote:

> 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)
>
>

--
Regards
Wang Pengfei

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Guillaume Lelarge 2024-05-27 16:24:17 Re: BUG #18481: BIGINT Out of Range Error When Selecting Data
Previous Message PG Bug reporting form 2024-05-27 11:23:03 BUG #18481: BIGINT Out of Range Error When Selecting Data