diff options
Diffstat (limited to 'src/backend/access/brin/brin_pageops.c')
-rw-r--r-- | src/backend/access/brin/brin_pageops.c | 52 |
1 files changed, 34 insertions, 18 deletions
diff --git a/src/backend/access/brin/brin_pageops.c b/src/backend/access/brin/brin_pageops.c index d0ca485caa6..a522b0b5dce 100644 --- a/src/backend/access/brin/brin_pageops.c +++ b/src/backend/access/brin/brin_pageops.c @@ -110,7 +110,7 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, newbuf = InvalidBuffer; extended = false; } - oldpage = BufferGetPage(oldbuf); + oldpage = BufferGetPage(oldbuf, NULL, NULL, BGP_NO_SNAPSHOT_TEST); oldlp = PageGetItemId(oldpage, oldoff); /* @@ -228,7 +228,8 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, * Not enough free space on the oldpage. Put the new tuple on the new * page, and update the revmap. */ - Page newpage = BufferGetPage(newbuf); + Page newpage = BufferGetPage(newbuf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST); Buffer revmapbuf; ItemPointerData newtid; OffsetNumber newoff; @@ -245,7 +246,9 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, * need to do that here. */ if (extended) - brin_page_init(BufferGetPage(newbuf), BRIN_PAGETYPE_REGULAR); + brin_page_init(BufferGetPage(newbuf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST), + BRIN_PAGETYPE_REGULAR); PageIndexDeleteNoCompact(oldpage, &oldoff, 1); newoff = PageAddItem(newpage, (Item) newtup, newsz, @@ -298,7 +301,9 @@ brin_doupdate(Relation idxrel, BlockNumber pagesPerRange, PageSetLSN(oldpage, recptr); PageSetLSN(newpage, recptr); - PageSetLSN(BufferGetPage(revmapbuf), recptr); + PageSetLSN(BufferGetPage(revmapbuf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST), + recptr); } END_CRIT_SECTION(); @@ -326,7 +331,9 @@ brin_can_do_samepage_update(Buffer buffer, Size origsz, Size newsz) { return ((newsz <= origsz) || - PageGetExactFreeSpace(BufferGetPage(buffer)) >= (newsz - origsz)); + PageGetExactFreeSpace(BufferGetPage(buffer, NULL, NULL, + BGP_NO_SNAPSHOT_TEST)) + >= (newsz - origsz)); } /* @@ -381,7 +388,9 @@ brin_doinsert(Relation idxrel, BlockNumber pagesPerRange, * it's still a regular page. */ LockBuffer(*buffer, BUFFER_LOCK_EXCLUSIVE); - if (br_page_get_freespace(BufferGetPage(*buffer)) < itemsz) + if (br_page_get_freespace(BufferGetPage(*buffer, NULL, NULL, + BGP_NO_SNAPSHOT_TEST)) + < itemsz) { UnlockReleaseBuffer(*buffer); *buffer = InvalidBuffer; @@ -404,13 +413,15 @@ brin_doinsert(Relation idxrel, BlockNumber pagesPerRange, /* Now obtain lock on revmap buffer */ revmapbuf = brinLockRevmapPageForUpdate(revmap, heapBlk); - page = BufferGetPage(*buffer); + page = BufferGetPage(*buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST); blk = BufferGetBlockNumber(*buffer); /* Execute the actual insertion */ START_CRIT_SECTION(); if (extended) - brin_page_init(BufferGetPage(*buffer), BRIN_PAGETYPE_REGULAR); + brin_page_init(BufferGetPage(*buffer, NULL, NULL, + BGP_NO_SNAPSHOT_TEST), + BRIN_PAGETYPE_REGULAR); off = PageAddItem(page, (Item) tup, itemsz, InvalidOffsetNumber, false, false); if (off == InvalidOffsetNumber) @@ -447,7 +458,8 @@ brin_doinsert(Relation idxrel, BlockNumber pagesPerRange, recptr = XLogInsert(RM_BRIN_ID, info); PageSetLSN(page, recptr); - PageSetLSN(BufferGetPage(revmapbuf), recptr); + PageSetLSN(BufferGetPage(revmapbuf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST), recptr); } END_CRIT_SECTION(); @@ -515,7 +527,7 @@ brin_start_evacuating_page(Relation idxRel, Buffer buf) OffsetNumber maxoff; Page page; - page = BufferGetPage(buf); + page = BufferGetPage(buf, NULL, NULL, BGP_NO_SNAPSHOT_TEST); if (PageIsNew(page)) return false; @@ -551,7 +563,7 @@ brin_evacuate_page(Relation idxRel, BlockNumber pagesPerRange, OffsetNumber maxoff; Page page; - page = BufferGetPage(buf); + page = BufferGetPage(buf, NULL, NULL, BGP_NO_SNAPSHOT_TEST); Assert(BrinPageFlags(page) & BRIN_EVACUATE_PAGE); @@ -598,7 +610,7 @@ brin_evacuate_page(Relation idxRel, BlockNumber pagesPerRange, bool brin_page_cleanup(Relation idxrel, Buffer buf) { - Page page = BufferGetPage(buf); + Page page = BufferGetPage(buf, NULL, NULL, BGP_NO_SNAPSHOT_TEST); Size freespace; /* @@ -627,8 +639,10 @@ brin_page_cleanup(Relation idxrel, Buffer buf) } /* Nothing to be done for non-regular index pages */ - if (BRIN_IS_META_PAGE(BufferGetPage(buf)) || - BRIN_IS_REVMAP_PAGE(BufferGetPage(buf))) + if (BRIN_IS_META_PAGE(BufferGetPage(buf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST)) || + BRIN_IS_REVMAP_PAGE(BufferGetPage(buf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST))) return false; /* Measure free space and record it */ @@ -738,7 +752,8 @@ brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz, if (BufferIsValid(oldbuf) && oldblk < newblk) { LockBuffer(oldbuf, BUFFER_LOCK_EXCLUSIVE); - if (!BRIN_IS_REGULAR_PAGE(BufferGetPage(oldbuf))) + if (!BRIN_IS_REGULAR_PAGE(BufferGetPage(oldbuf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST))) { LockBuffer(oldbuf, BUFFER_LOCK_UNLOCK); @@ -770,7 +785,7 @@ brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz, if (extensionLockHeld) UnlockRelationForExtension(irel, ExclusiveLock); - page = BufferGetPage(buf); + page = BufferGetPage(buf, NULL, NULL, BGP_NO_SNAPSHOT_TEST); /* * We have a new buffer to insert into. Check that the new page has @@ -805,7 +820,8 @@ brin_getinsertbuffer(Relation irel, Buffer oldbuf, Size itemsz, if (BufferIsValid(oldbuf) && oldblk > newblk) { LockBuffer(oldbuf, BUFFER_LOCK_EXCLUSIVE); - Assert(BRIN_IS_REGULAR_PAGE(BufferGetPage(oldbuf))); + Assert(BRIN_IS_REGULAR_PAGE(BufferGetPage(oldbuf, NULL, NULL, + BGP_NO_SNAPSHOT_TEST))); } return buf; @@ -862,7 +878,7 @@ brin_initialize_empty_new_buffer(Relation idxrel, Buffer buffer) BufferGetBlockNumber(buffer))); START_CRIT_SECTION(); - page = BufferGetPage(buffer); + page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST); brin_page_init(page, BRIN_PAGETYPE_REGULAR); MarkBufferDirty(buffer); log_newpage_buffer(buffer, true); |