summaryrefslogtreecommitdiff
path: root/src/backend/access/brin/brin_pageops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/brin/brin_pageops.c')
-rw-r--r--src/backend/access/brin/brin_pageops.c52
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);