mirror of
https://github.com/postgres/postgres.git
synced 2025-05-01 01:04:50 +03:00
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.
This commit is contained in:
parent
b5eccaef2c
commit
e93c0b820f
@ -603,7 +603,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
|
|||||||
if (!PageIsAllVisible(page))
|
if (!PageIsAllVisible(page))
|
||||||
{
|
{
|
||||||
PageSetAllVisible(page);
|
PageSetAllVisible(page);
|
||||||
SetBufferCommitInfoNeedsSave(buf);
|
MarkBufferDirty(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
|
LockBuffer(buf, BUFFER_LOCK_UNLOCK);
|
||||||
@ -838,7 +838,7 @@ lazy_scan_heap(Relation onerel, LVRelStats *vacrelstats,
|
|||||||
if (!PageIsAllVisible(page) && all_visible)
|
if (!PageIsAllVisible(page) && all_visible)
|
||||||
{
|
{
|
||||||
PageSetAllVisible(page);
|
PageSetAllVisible(page);
|
||||||
SetBufferCommitInfoNeedsSave(buf);
|
MarkBufferDirty(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user