heap-update-vm-fix.patch
application/octet-stream
Filename: heap-update-vm-fix.patch
Type: application/octet-stream
Part: 0
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 7bb4a87..05f14e4 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -2888,11 +2888,15 @@ l2:
{
all_visible_cleared = true;
PageClearAllVisible(BufferGetPage(buffer));
+ visibilitymap_clear(relation, BufferGetBlockNumber(buffer),
+ vmbuffer);
}
if (newbuf != buffer && PageIsAllVisible(BufferGetPage(newbuf)))
{
all_visible_cleared_new = true;
PageClearAllVisible(BufferGetPage(newbuf));
+ visibilitymap_clear(relation, BufferGetBlockNumber(newbuf),
+ vmbuffer_new);
}
if (newbuf != buffer)
@@ -2929,14 +2933,6 @@ l2:
*/
CacheInvalidateHeapTuple(relation, &oldtup);
- /* Clear bits in visibility map */
- if (all_visible_cleared)
- visibilitymap_clear(relation, BufferGetBlockNumber(buffer),
- vmbuffer);
- if (all_visible_cleared_new)
- visibilitymap_clear(relation, BufferGetBlockNumber(newbuf),
- vmbuffer_new);
-
/* Now we can release the buffer(s) */
if (newbuf != buffer)
ReleaseBuffer(newbuf);