Re: B-tree parent pointer and checkpoints

From: Bruce Momjian <bruce(at)momjian(dot)us>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Greg Stark <gsstark(at)mit(dot)edu>, Teodor Sigaev <teodor(at)sigaev(dot)ru>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, Oleg Bartunov <oleg(at)sai(dot)msu(dot)su>
Subject: Re: B-tree parent pointer and checkpoints
Date: 2012-08-15 22:23:15
Message-ID: 20120815222315.GR25473@momjian.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Has this been addressed? A TODO?

---------------------------------------------------------------------------

On Tue, Sep 6, 2011 at 09:49:39AM -0400, Robert Haas wrote:
> On Tue, Sep 6, 2011 at 9:45 AM, Heikki Linnakangas
> <heikki(dot)linnakangas(at)enterprisedb(dot)com> wrote:
> >> Do you really need to hold the page locks for all that time, or could
> >> you cheat?  Like... release the locks on the split pages but then go
> >> back and reacquire them to clear the flag...
> >
> > Hmm, there's two issues with that:
> >
> > 1. While you're not holding the locks on the child pages, someone can step
> > onto the page and see that the MISSING_DOWNLINK flag is set, and try to
> > finish the split for you.
> >
> > 2. If you don't hold the page locked while you clear the flag, someone can
> > start and finish a checkpoint after you've inserted the downlink, and before
> > you've cleared the flag. You end up in a scenario where the flag is set, but
> > the page in fact *does* have a downlink in the parent.
>
> It seems like both of these could be handled by making the code that
> repairs the damage insert the downlink into the parent only if it's
> not already present.
>
> --
> Robert Haas
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company

--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com

+ It's impossible for everything to be true. +

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Merlin Moncure 2012-08-15 22:28:10 Planner avoidance of index only scans for partial indexes
Previous Message Bruce Momjian 2012-08-15 21:45:42 Re: [BUGS] BUG #6184: Inconsistencies in log messages