]> granicus.if.org Git - postgresql/commit
Fix error when trying to delete page with half-dead left sibling.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sun, 25 May 2014 22:15:04 +0000 (18:15 -0400)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Sun, 25 May 2014 22:18:09 +0000 (18:18 -0400)
commit8da31837803e95f26642019d859c3309d1c125fa
tree3e8fda46c42f6264e4510d12680d8a301e7555b9
parent9a65fb350717360c505de9df411024d47e55710b
Fix error when trying to delete page with half-dead left sibling.

The new page deletion code didn't cope with the case the target page's
right sibling was marked half-dead. It failed a sanity check which checked
that the downlinks in the parent page match the lower level, because a
half-dead page has no downlink. To cope, check for that condition, and
just give up on the deletion if it happens. The vacuum will finish the
deletion of the half-dead page when it gets there, and on the next vacuum
after that the empty can be deleted.

Reported by Jeff Janes.
src/backend/access/nbtree/nbtpage.c