aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-11-18 09:51:09 +0200
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2013-11-18 09:51:09 +0200
commit4c697d8f4845823a8af67788b219ffa4516ad14c (patch)
treef1a2c0858f3e6cceaba1a8c2efd48ee947c4daef
parentf901bb50e33ad95593bb68f7b3b55eb2e47607dc (diff)
downloadpostgresql-4c697d8f4845823a8af67788b219ffa4516ad14c.tar.gz
postgresql-4c697d8f4845823a8af67788b219ffa4516ad14c.zip
Count locked pages that don't need vacuuming as scanned.
Previously, if VACUUM skipped vacuuming a page because it's pinned, it didn't count that page as scanned. However, that meant that relfrozenxid was not bumped up either, which prevented anti-wraparound vacuum from doing its job. Report by Миша Тюрин, analysis and patch by Sergey Burladyn and Jeff Janes. Backpatch to 9.2, where the skip-locked-pages behavior was introduced.
-rw-r--r--src/backend/commands/vacuumlazy.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c
index e1d6d1c9e61..6778c7d58fa 100644
--- a/src/backend/commands/vacuumlazy.c
+++ b/src/backend/commands/vacuumlazy.c
@@ -602,6 +602,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
if (!lazy_check_needs_freeze(buf))
{
UnlockReleaseBuffer(buf);
+ vacrelstats->scanned_pages++;
continue;
}
LockBuffer(buf, BUFFER_LOCK_UNLOCK);