postgresql/src/backend/access
Tom Lane b4af1c25bb Fix SPGiST vacuum algorithm to handle concurrent tuple motion properly.
A leaf tuple that we need to delete could get moved as a consequence of an
insertion happening concurrently with the VACUUM scan.  If it moves from a
page past the current scan point to a page before, we'll miss it, which is
not acceptable.  Hence, when we see a leaf-page REDIRECT that could have
been made since our scan started, chase down the redirection pointer much
as if we were doing a normal index search, and be sure to vacuum every page
it leads to.  This fixes the issue because, if the tuple was on page N at
the instant we start our scan, we will surely find it as a consequence of
chasing the redirect from page N, no matter how much it moves around in
between.  Problem noted by Takashi Yamamoto.
2012-03-12 16:10:28 -04:00
..
common Update outdated comment. HeapTupleHeader.t_natts field doesn't exist anymore. 2012-03-09 08:07:56 +02:00
gin Fix some more bugs in GIN's WAL replay logic. 2012-02-26 15:12:17 -05:00
gist When a GiST page is split during index build, it might not have a buffer. 2012-03-02 13:16:09 +02:00
hash Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
heap Fix heap_multi_insert to set t_self field in the caller's tuples. 2012-02-13 10:20:50 +02:00
index Update copyright notices for year 2012. 2012-01-01 18:01:58 -05:00
nbtree Don't clear btpo_cycleid during _bt_vacuum_one_page. 2012-02-21 15:03:36 -05:00
spgist Fix SPGiST vacuum algorithm to handle concurrent tuple motion properly. 2012-03-12 16:10:28 -04:00
transam Silence warning about unused variable, when building without assertions. 2012-03-08 11:10:02 +02:00
Makefile Add SP-GiST (space-partitioned GiST) index access method. 2011-12-17 16:42:30 -05:00