diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-11-18 09:51:09 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2013-11-18 10:16:31 +0200 |
commit | ea2bb1b47d7629a17dbc0c7da66cf063f8d3a768 (patch) | |
tree | d363c555729b6e47bc98a96359a95f9b039d78c3 | |
parent | 4b61f6783793a362423e511d76027e5983fc241c (diff) | |
download | postgresql-ea2bb1b47d7629a17dbc0c7da66cf063f8d3a768.tar.gz postgresql-ea2bb1b47d7629a17dbc0c7da66cf063f8d3a768.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.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index c2b3d719b93..11d0192931f 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); |