From 4617d97e2953fcb5b20bb14750bcc971ed504286 Mon Sep 17 00:00:00 2001 From: Aleksander Alekseev Date: Thu, 7 Aug 2025 17:04:30 +0300 Subject: [PATCH v2 2/2] Bugfix TODO FIXME write a better message --- src/backend/access/heap/heapam.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index e5da051aaf0..6e38c9b4d37 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -2135,10 +2135,13 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid, { all_visible_cleared = true; PageClearAllVisible(BufferGetPage(buffer)); - visibilitymap_clear(relation, - ItemPointerGetBlockNumber(&(heaptup->t_self)), - vmbuffer, VISIBILITYMAP_VALID_BITS); - INJECTION_POINT_CACHED("heap-insert:visibilitymap-clear", NULL); + + /* + * Visibility map should be updated *after* logging the change + * within the same critical section. + * + * AALEKSEEV TODO clarify the reason + */ } /* @@ -2233,6 +2236,14 @@ heap_insert(Relation relation, HeapTuple tup, CommandId cid, PageSetLSN(page, recptr); } + if (all_visible_cleared) + { + visibilitymap_clear(relation, + ItemPointerGetBlockNumber(&(heaptup->t_self)), + vmbuffer, VISIBILITYMAP_VALID_BITS); + INJECTION_POINT_CACHED("heap-insert:visibilitymap-clear", NULL); + } + END_CRIT_SECTION(); UnlockReleaseBuffer(buffer); -- 2.43.0