From e93c0b820f03e96ae0549cd30805ae734e5d5e2f Mon Sep 17 00:00:00 2001 From: Robert Haas Date: Wed, 18 Apr 2012 10:49:37 -0400 Subject: [PATCH] After PageSetAllVisible, use MarkBufferDirty. Previously, we used SetBufferCommitInfoNeedsSave, but that's really intended for dirty-marks we can theoretically afford to lose, such as hint bits. As for 9.2, the PD_ALL_VISIBLE mustn't be lost in this way, since we could then end up with a heap page that isn't all-visible and a visibility map page that is all visible, causing index-only scans to return wrong answers. --- src/backend/commands/vacuumlazy.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/commands/vacuumlazy.c b/src/backend/commands/vacuumlazy.c index 0a617e34b6..d2cfcc024c 100644 --- a/src/backend/commands/vacuumlazy.c +++ b/src/backend/commands/vacuumlazy.c @@ -603,7 +603,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, if (!PageIsAllVisible(page)) { PageSetAllVisible(page); - SetBufferCommitInfoNeedsSave(buf); + MarkBufferDirty(buf); } LockBuffer(buf, BUFFER_LOCK_UNLOCK); @@ -838,7 +838,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats, if (!PageIsAllVisible(page) && all_visible) { PageSetAllVisible(page); - SetBufferCommitInfoNeedsSave(buf); + MarkBufferDirty(buf); } /* -- 2.40.0