]> granicus.if.org Git - postgresql/commit
Avoid early reuse of btree pages, causing incorrect query results.
authorSimon Riggs <simon@2ndQuadrant.com>
Fri, 1 Jun 2012 11:39:08 +0000 (12:39 +0100)
committerSimon Riggs <simon@2ndQuadrant.com>
Fri, 1 Jun 2012 11:39:08 +0000 (12:39 +0100)
commit873d1c11ea25f24815861c2e474fc43500d561c8
tree09d83ae8c9d8e6d6e71a2aac1273a514b11d1c2e
parent8e61ded616bdce65c43254b010f801f39b29ce3b
Avoid early reuse of btree pages, causing incorrect query results.
When we allowed read-only transactions to skip assigning XIDs
we introduced the possibility that a fully deleted btree page
could be reused. This broke the index link sequence which could
then lead to indexscans silently returning fewer rows than would
have been correct. The actual incidence of silent errors from
this is thought to be very low because of the exact workload
required and locking pre-conditions. Fix is to remove pages only
if index page opaque->btpo.xact precedes RecentGlobalXmin.

Noah Misch, reviewed by Simon Riggs
src/backend/access/nbtree/README
src/backend/access/nbtree/nbtpage.c
src/backend/access/nbtree/nbtxlog.c