Re: Avoiding another needless ERROR during nbtree page deletion

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: Heikki Linnakangas <hlinnaka@iki.fi>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-05-22T17:59:59Z
Lists: pgsql-hackers

Attachments

On Mon, May 22, 2023 at 9:22 AM Peter Geoghegan <pg@bowt.ie> wrote:
> > This comment notes that this is similar to what we did with the left
> > sibling, but there isn't really any mention at the left sibling code
> > about avoiding hard ERRORs. Feels a bit backwards. Maybe move the
> > comment about avoiding the hard ERROR to where the left sibling is
> > handled. Or explain it in the function comment and just have short
> > "shouldn't happen, but avoid hard ERROR if the index is corrupt" comment
> > here.
>
> Good point. Will do it that way.

Attached is v2, which does it that way. It also adjusts the approach
taken to release locks and pins when the left sibling validation check
fails. This makes it simpler and more consistent with surrounding
code. I might not include this change in the backpatch.

Not including a revised amcheck patch here, since I'm not exactly sure
what to do with your feedback on that one just yet.

-- 
Peter Geoghegan

Commits

  1. nbtree VACUUM: cope with right sibling link corruption.

  2. Backpatch nbtree page deletion hardening.

  3. nbtree VACUUM: Cope with buggy opclasses.