aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/spgist
diff options
context:
space:
mode:
authorKevin Grittner <kgrittn@postgresql.org>2016-04-08 14:30:10 -0500
committerKevin Grittner <kgrittn@postgresql.org>2016-04-08 14:30:10 -0500
commit8b65cf4c5edabdcae45ceaef7b9ac236879aae50 (patch)
treef4412d3e9bc0db823ac32e08fac8e3124b42ff02 /src/backend/access/spgist
parent689f9a058854a1a32e994818dd6d79f49d8f8a1b (diff)
downloadpostgresql-8b65cf4c5edabdcae45ceaef7b9ac236879aae50.tar.gz
postgresql-8b65cf4c5edabdcae45ceaef7b9ac236879aae50.zip
Modify BufferGetPage() to prepare for "snapshot too old" feature
This patch is a no-op patch which is intended to reduce the chances of failures of omission once the functional part of the "snapshot too old" patch goes in. It adds parameters for snapshot, relation, and an enum to specify whether the snapshot age check needs to be done for the page at this point. This initial patch passes NULL for the first two new parameters and BGP_NO_SNAPSHOT_TEST for the third. The follow-on patch will change the places where the test needs to be made.
Diffstat (limited to 'src/backend/access/spgist')
-rw-r--r--src/backend/access/spgist/spgdoinsert.c39
-rw-r--r--src/backend/access/spgist/spginsert.c12
-rw-r--r--src/backend/access/spgist/spgscan.c9
-rw-r--r--src/backend/access/spgist/spgutils.c19
-rw-r--r--src/backend/access/spgist/spgvacuum.c13
-rw-r--r--src/backend/access/spgist/spgxlog.c50
6 files changed, 84 insertions, 58 deletions
diff --git a/src/backend/access/spgist/spgdoinsert.c b/src/backend/access/spgist/spgdoinsert.c
index f090ca528b1..b780bfea44d 100644
--- a/src/backend/access/spgist/spgdoinsert.c
+++ b/src/backend/access/spgist/spgdoinsert.c
@@ -451,7 +451,7 @@ moveLeafs(Relation index, SpGistState *state,
/* Find a leaf page that will hold them */
nbuf = SpGistGetBuffer(index, GBUF_LEAF | (isNulls ? GBUF_NULLS : 0),
size, &xlrec.newPage);
- npage = BufferGetPage(nbuf);
+ npage = BufferGetPage(nbuf, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
nblkno = BufferGetBlockNumber(nbuf);
Assert(nblkno != current->blkno);
@@ -1037,7 +1037,8 @@ doPickSplit(Relation index, SpGistState *state,
nodePageSelect = (uint8 *) palloc(sizeof(uint8) * out.nNodes);
curspace = currentFreeSpace;
- newspace = PageGetExactFreeSpace(BufferGetPage(newLeafBuffer));
+ newspace = PageGetExactFreeSpace
+ (BufferGetPage(newLeafBuffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST));
for (i = 0; i < out.nNodes; i++)
{
if (leafSizes[i] <= curspace)
@@ -1070,7 +1071,9 @@ doPickSplit(Relation index, SpGistState *state,
/* Repeat the node assignment process --- should succeed now */
curspace = currentFreeSpace;
- newspace = PageGetExactFreeSpace(BufferGetPage(newLeafBuffer));
+ newspace = PageGetExactFreeSpace
+ (BufferGetPage(newLeafBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST));
for (i = 0; i < out.nNodes; i++)
{
if (leafSizes[i] <= curspace)
@@ -1201,7 +1204,9 @@ doPickSplit(Relation index, SpGistState *state,
it->nextOffset = InvalidOffsetNumber;
/* Insert it on page */
- newoffset = SpGistPageAddNewItem(state, BufferGetPage(leafBuffer),
+ newoffset = SpGistPageAddNewItem(state,
+ BufferGetPage(leafBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST),
(Item) it, it->size,
&startOffsets[leafPageSelect[i]],
false);
@@ -1275,7 +1280,8 @@ doPickSplit(Relation index, SpGistState *state,
/* Repoint "current" at the new inner tuple */
current->buffer = newInnerBuffer;
current->blkno = BufferGetBlockNumber(current->buffer);
- current->page = BufferGetPage(current->buffer);
+ current->page = BufferGetPage(current->buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
xlrec.offnumInner = current->offnum =
SpGistPageAddNewItem(state, current->page,
(Item) innerTuple, innerTuple->size,
@@ -1391,24 +1397,22 @@ doPickSplit(Relation index, SpGistState *state,
/* Update page LSNs on all affected pages */
if (newLeafBuffer != InvalidBuffer)
{
- Page page = BufferGetPage(newLeafBuffer);
-
+ Page page = BufferGetPage(newLeafBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
PageSetLSN(page, recptr);
}
if (saveCurrent.buffer != InvalidBuffer)
{
- Page page = BufferGetPage(saveCurrent.buffer);
-
+ Page page = BufferGetPage(saveCurrent.buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
PageSetLSN(page, recptr);
}
PageSetLSN(current->page, recptr);
if (parent->buffer != InvalidBuffer)
- {
PageSetLSN(parent->page, recptr);
- }
}
END_CRIT_SECTION();
@@ -1578,7 +1582,8 @@ spgAddNodeAction(Relation index, SpGistState *state,
newInnerTuple->size + sizeof(ItemIdData),
&xlrec.newPage);
current->blkno = BufferGetBlockNumber(current->buffer);
- current->page = BufferGetPage(current->buffer);
+ current->page = BufferGetPage(current->buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
/*
* Let's just make real sure new current isn't same as old. Right now
@@ -1793,7 +1798,9 @@ spgSplitNodeAction(Relation index, SpGistState *state,
{
postfixBlkno = BufferGetBlockNumber(newBuffer);
xlrec.offnumPostfix = postfixOffset =
- SpGistPageAddNewItem(state, BufferGetPage(newBuffer),
+ SpGistPageAddNewItem(state,
+ BufferGetPage(newBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST),
(Item) postfixTuple, postfixTuple->size,
NULL, false);
MarkBufferDirty(newBuffer);
@@ -1840,7 +1847,8 @@ spgSplitNodeAction(Relation index, SpGistState *state,
if (newBuffer != InvalidBuffer)
{
- PageSetLSN(BufferGetPage(newBuffer), recptr);
+ PageSetLSN(BufferGetPage(newBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST), recptr);
}
}
@@ -1984,7 +1992,8 @@ spgdoinsert(Relation index, SpGistState *state,
/* inner tuple can be stored on the same page as parent one */
current.buffer = parent.buffer;
}
- current.page = BufferGetPage(current.buffer);
+ current.page = BufferGetPage(current.buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
/* should not arrive at a page of the wrong type */
if (isnull ? !SpGistPageStoresNulls(current.page) :
diff --git a/src/backend/access/spgist/spginsert.c b/src/backend/access/spgist/spginsert.c
index 44fd644e421..3e16b511ac0 100644
--- a/src/backend/access/spgist/spginsert.c
+++ b/src/backend/access/spgist/spginsert.c
@@ -92,7 +92,8 @@ spgbuild(Relation heap, Relation index, IndexInfo *indexInfo)
START_CRIT_SECTION();
- SpGistInitMetapage(BufferGetPage(metabuffer));
+ SpGistInitMetapage(BufferGetPage(metabuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST));
MarkBufferDirty(metabuffer);
SpGistInitBuffer(rootbuffer, SPGIST_LEAF);
MarkBufferDirty(rootbuffer);
@@ -115,9 +116,12 @@ spgbuild(Relation heap, Relation index, IndexInfo *indexInfo)
recptr = XLogInsert(RM_SPGIST_ID, XLOG_SPGIST_CREATE_INDEX);
- PageSetLSN(BufferGetPage(metabuffer), recptr);
- PageSetLSN(BufferGetPage(rootbuffer), recptr);
- PageSetLSN(BufferGetPage(nullbuffer), recptr);
+ PageSetLSN(BufferGetPage(metabuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST), recptr);
+ PageSetLSN(BufferGetPage(rootbuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST), recptr);
+ PageSetLSN(BufferGetPage(nullbuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST), recptr);
}
END_CRIT_SECTION();
diff --git a/src/backend/access/spgist/spgscan.c b/src/backend/access/spgist/spgscan.c
index 8aa28ecbc39..fafdca31f39 100644
--- a/src/backend/access/spgist/spgscan.c
+++ b/src/backend/access/spgist/spgscan.c
@@ -301,7 +301,7 @@ spgLeafTest(Relation index, SpGistScanOpaque so,
*/
static void
spgWalk(Relation index, SpGistScanOpaque so, bool scanWholeIndex,
- storeRes_func storeRes)
+ storeRes_func storeRes, Snapshot snapshot)
{
Buffer buffer = InvalidBuffer;
bool reportedSome = false;
@@ -341,7 +341,7 @@ redirect:
}
/* else new pointer points to the same page, no work needed */
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
isnull = SpGistPageStoresNulls(page) ? true : false;
@@ -576,7 +576,7 @@ spggetbitmap(IndexScanDesc scan, TIDBitmap *tbm)
so->tbm = tbm;
so->ntids = 0;
- spgWalk(scan->indexRelation, so, true, storeBitmap);
+ spgWalk(scan->indexRelation, so, true, storeBitmap, scan->xs_snapshot);
return so->ntids;
}
@@ -635,7 +635,8 @@ spggettuple(IndexScanDesc scan, ScanDirection dir)
}
so->iPtr = so->nPtrs = 0;
- spgWalk(scan->indexRelation, so, false, storeGettuple);
+ spgWalk(scan->indexRelation, so, false, storeGettuple,
+ scan->xs_snapshot);
if (so->nPtrs == 0)
break; /* must have completed scan */
diff --git a/src/backend/access/spgist/spgutils.c b/src/backend/access/spgist/spgutils.c
index 201203f91a3..f4bcbeeb4a8 100644
--- a/src/backend/access/spgist/spgutils.c
+++ b/src/backend/access/spgist/spgutils.c
@@ -126,7 +126,8 @@ spgGetCache(Relation index)
metabuffer = ReadBuffer(index, SPGIST_METAPAGE_BLKNO);
LockBuffer(metabuffer, BUFFER_LOCK_SHARE);
- metadata = SpGistPageGetMeta(BufferGetPage(metabuffer));
+ metadata = SpGistPageGetMeta
+ (BufferGetPage(metabuffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST));
if (metadata->magicNumber != SPGIST_MAGIC_NUMBER)
elog(ERROR, "index \"%s\" is not an SP-GiST index",
@@ -206,7 +207,8 @@ SpGistNewBuffer(Relation index)
*/
if (ConditionalLockBuffer(buffer))
{
- Page page = BufferGetPage(buffer);
+ Page page = BufferGetPage(buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
if (PageIsNew(page))
return buffer; /* OK to use, if never initialized */
@@ -256,7 +258,8 @@ SpGistUpdateMetaPage(Relation index)
if (ConditionalLockBuffer(metabuffer))
{
- metadata = SpGistPageGetMeta(BufferGetPage(metabuffer));
+ metadata = SpGistPageGetMeta
+ (BufferGetPage(metabuffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST));
metadata->lastUsedPages = cache->lastUsedPages;
MarkBufferDirty(metabuffer);
@@ -333,7 +336,9 @@ allocNewBuffer(Relation index, int flags)
blkFlags |= GBUF_NULLS;
cache->lastUsedPages.cachedPage[blkFlags].blkno = blkno;
cache->lastUsedPages.cachedPage[blkFlags].freeSpace =
- PageGetExactFreeSpace(BufferGetPage(buffer));
+ PageGetExactFreeSpace
+ (BufferGetPage(buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST));
UnlockReleaseBuffer(buffer);
}
}
@@ -401,7 +406,7 @@ SpGistGetBuffer(Relation index, int flags, int needSpace, bool *isNew)
return allocNewBuffer(index, flags);
}
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
if (PageIsNew(page) || SpGistPageIsDeleted(page) || PageIsEmpty(page))
{
@@ -460,7 +465,7 @@ SpGistSetLastUsedPage(Relation index, Buffer buffer)
SpGistCache *cache = spgGetCache(index);
SpGistLastUsedPage *lup;
int freeSpace;
- Page page = BufferGetPage(buffer);
+ Page page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
BlockNumber blkno = BufferGetBlockNumber(buffer);
int flags;
@@ -508,7 +513,7 @@ void
SpGistInitBuffer(Buffer b, uint16 f)
{
Assert(BufferGetPageSize(b) == BLCKSZ);
- SpGistInitPage(BufferGetPage(b), f);
+ SpGistInitPage(BufferGetPage(b, NULL, NULL, BGP_NO_SNAPSHOT_TEST), f);
}
/*
diff --git a/src/backend/access/spgist/spgvacuum.c b/src/backend/access/spgist/spgvacuum.c
index 15b867f24cb..6b57790a6aa 100644
--- a/src/backend/access/spgist/spgvacuum.c
+++ b/src/backend/access/spgist/spgvacuum.c
@@ -125,7 +125,8 @@ static void
vacuumLeafPage(spgBulkDeleteState *bds, Relation index, Buffer buffer,
bool forPending)
{
- Page page = BufferGetPage(buffer);
+ Page page = BufferGetPage(buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
spgxlogVacuumLeaf xlrec;
OffsetNumber toDead[MaxIndexTuplesPerPage];
OffsetNumber toPlaceholder[MaxIndexTuplesPerPage];
@@ -405,7 +406,8 @@ vacuumLeafPage(spgBulkDeleteState *bds, Relation index, Buffer buffer,
static void
vacuumLeafRoot(spgBulkDeleteState *bds, Relation index, Buffer buffer)
{
- Page page = BufferGetPage(buffer);
+ Page page = BufferGetPage(buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
spgxlogVacuumRoot xlrec;
OffsetNumber toDelete[MaxIndexTuplesPerPage];
OffsetNumber i,
@@ -490,7 +492,8 @@ vacuumLeafRoot(spgBulkDeleteState *bds, Relation index, Buffer buffer)
static void
vacuumRedirectAndPlaceholder(Relation index, Buffer buffer)
{
- Page page = BufferGetPage(buffer);
+ Page page = BufferGetPage(buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
SpGistPageOpaque opaque = SpGistPageGetOpaque(page);
OffsetNumber i,
max = PageGetMaxOffsetNumber(page),
@@ -615,7 +618,7 @@ spgvacuumpage(spgBulkDeleteState *bds, BlockNumber blkno)
buffer = ReadBufferExtended(index, MAIN_FORKNUM, blkno,
RBM_NORMAL, bds->info->strategy);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
- page = (Page) BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
if (PageIsNew(page))
{
@@ -696,7 +699,7 @@ spgprocesspending(spgBulkDeleteState *bds)
buffer = ReadBufferExtended(index, MAIN_FORKNUM, blkno,
RBM_NORMAL, bds->info->strategy);
LockBuffer(buffer, BUFFER_LOCK_EXCLUSIVE);
- page = (Page) BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
if (PageIsNew(page) || SpGistPageIsDeleted(page))
{
diff --git a/src/backend/access/spgist/spgxlog.c b/src/backend/access/spgist/spgxlog.c
index 01a4e0f2528..b5fc2663f03 100644
--- a/src/backend/access/spgist/spgxlog.c
+++ b/src/backend/access/spgist/spgxlog.c
@@ -79,7 +79,7 @@ spgRedoCreateIndex(XLogReaderState *record)
buffer = XLogInitBufferForRedo(record, 0);
Assert(BufferGetBlockNumber(buffer) == SPGIST_METAPAGE_BLKNO);
- page = (Page) BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
SpGistInitMetapage(page);
PageSetLSN(page, lsn);
MarkBufferDirty(buffer);
@@ -88,7 +88,7 @@ spgRedoCreateIndex(XLogReaderState *record)
buffer = XLogInitBufferForRedo(record, 1);
Assert(BufferGetBlockNumber(buffer) == SPGIST_ROOT_BLKNO);
SpGistInitBuffer(buffer, SPGIST_LEAF);
- page = (Page) BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
PageSetLSN(page, lsn);
MarkBufferDirty(buffer);
UnlockReleaseBuffer(buffer);
@@ -96,7 +96,7 @@ spgRedoCreateIndex(XLogReaderState *record)
buffer = XLogInitBufferForRedo(record, 2);
Assert(BufferGetBlockNumber(buffer) == SPGIST_NULL_BLKNO);
SpGistInitBuffer(buffer, SPGIST_LEAF | SPGIST_NULLS);
- page = (Page) BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
PageSetLSN(page, lsn);
MarkBufferDirty(buffer);
UnlockReleaseBuffer(buffer);
@@ -136,7 +136,7 @@ spgRedoAddLeaf(XLogReaderState *record)
if (action == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
/* insert new tuple */
if (xldata->offnumLeaf != xldata->offnumHeadLeaf)
@@ -183,7 +183,7 @@ spgRedoAddLeaf(XLogReaderState *record)
XLogRecGetBlockTag(record, 0, NULL, NULL, &blknoLeaf);
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
tuple = (SpGistInnerTuple) PageGetItem(page,
PageGetItemId(page, xldata->offnumParent));
@@ -249,7 +249,7 @@ spgRedoMoveLeafs(XLogReaderState *record)
{
int i;
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
for (i = 0; i < nInsert; i++)
{
@@ -278,7 +278,7 @@ spgRedoMoveLeafs(XLogReaderState *record)
/* Delete tuples from the source page, inserting a redirection pointer */
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
spgPageIndexMultiDelete(&state, page, toDelete, xldata->nMoves,
state.isBuild ? SPGIST_PLACEHOLDER : SPGIST_REDIRECT,
@@ -297,7 +297,7 @@ spgRedoMoveLeafs(XLogReaderState *record)
{
SpGistInnerTuple tuple;
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
tuple = (SpGistInnerTuple) PageGetItem(page,
PageGetItemId(page, xldata->offnumParent));
@@ -338,7 +338,7 @@ spgRedoAddNode(XLogReaderState *record)
Assert(xldata->parentBlk == -1);
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
PageIndexTupleDelete(page, xldata->offnum);
if (PageAddItem(page, (Item) innerTuple, innerTupleHdr.size,
@@ -381,7 +381,7 @@ spgRedoAddNode(XLogReaderState *record)
action = XLogReadBufferForRedo(record, 1, &buffer);
if (action == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
addOrReplaceTuple(page, (Item) innerTuple,
innerTupleHdr.size, xldata->offnumNew);
@@ -410,7 +410,7 @@ spgRedoAddNode(XLogReaderState *record)
{
SpGistDeadTuple dt;
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
if (state.isBuild)
dt = spgFormDeadTuple(&state, SPGIST_PLACEHOLDER,
@@ -462,7 +462,7 @@ spgRedoAddNode(XLogReaderState *record)
{
SpGistInnerTuple parentTuple;
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
parentTuple = (SpGistInnerTuple) PageGetItem(page,
PageGetItemId(page, xldata->offnumParent));
@@ -522,7 +522,7 @@ spgRedoSplitTuple(XLogReaderState *record)
action = XLogReadBufferForRedo(record, 1, &buffer);
if (action == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
addOrReplaceTuple(page, (Item) postfixTuple,
postfixTupleHdr.size, xldata->offnumPostfix);
@@ -537,7 +537,7 @@ spgRedoSplitTuple(XLogReaderState *record)
/* now handle the original page */
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
PageIndexTupleDelete(page, xldata->offnumPrefix);
if (PageAddItem(page, (Item) prefixTuple, prefixTupleHdr.size,
@@ -608,7 +608,7 @@ spgRedoPickSplit(XLogReaderState *record)
{
/* just re-init the source page */
srcBuffer = XLogInitBufferForRedo(record, 0);
- srcPage = (Page) BufferGetPage(srcBuffer);
+ srcPage = BufferGetPage(srcBuffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
SpGistInitBuffer(srcBuffer,
SPGIST_LEAF | (xldata->storesNulls ? SPGIST_NULLS : 0));
@@ -625,7 +625,7 @@ spgRedoPickSplit(XLogReaderState *record)
srcPage = NULL;
if (XLogReadBufferForRedo(record, 0, &srcBuffer) == BLK_NEEDS_REDO)
{
- srcPage = BufferGetPage(srcBuffer);
+ srcPage = BufferGetPage(srcBuffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
/*
* We have it a bit easier here than in doPickSplit(), because we
@@ -661,7 +661,8 @@ spgRedoPickSplit(XLogReaderState *record)
{
/* just re-init the dest page */
destBuffer = XLogInitBufferForRedo(record, 1);
- destPage = (Page) BufferGetPage(destBuffer);
+ destPage = BufferGetPage(destBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
SpGistInitBuffer(destBuffer,
SPGIST_LEAF | (xldata->storesNulls ? SPGIST_NULLS : 0));
@@ -674,7 +675,8 @@ spgRedoPickSplit(XLogReaderState *record)
* full-page-image case, but for safety let's hold it till later.
*/
if (XLogReadBufferForRedo(record, 1, &destBuffer) == BLK_NEEDS_REDO)
- destPage = (Page) BufferGetPage(destBuffer);
+ destPage = BufferGetPage(destBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
else
destPage = NULL; /* don't do any page updates */
}
@@ -722,7 +724,7 @@ spgRedoPickSplit(XLogReaderState *record)
if (action == BLK_NEEDS_REDO)
{
- page = BufferGetPage(innerBuffer);
+ page = BufferGetPage(innerBuffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
addOrReplaceTuple(page, (Item) innerTuple, innerTupleHdr.size,
xldata->offnumInner);
@@ -762,7 +764,8 @@ spgRedoPickSplit(XLogReaderState *record)
{
SpGistInnerTuple parent;
- page = BufferGetPage(parentBuffer);
+ page = BufferGetPage(parentBuffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
parent = (SpGistInnerTuple) PageGetItem(page,
PageGetItemId(page, xldata->offnumParent));
@@ -813,7 +816,7 @@ spgRedoVacuumLeaf(XLogReaderState *record)
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
spgPageIndexMultiDelete(&state, page,
toDead, xldata->nDead,
@@ -876,7 +879,7 @@ spgRedoVacuumRoot(XLogReaderState *record)
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
{
- page = BufferGetPage(buffer);
+ page = BufferGetPage(buffer, NULL, NULL, BGP_NO_SNAPSHOT_TEST);
/* The tuple numbers are in order */
PageIndexMultiDelete(page, toDelete, xldata->nDelete);
@@ -917,7 +920,8 @@ spgRedoVacuumRedirect(XLogReaderState *record)
if (XLogReadBufferForRedo(record, 0, &buffer) == BLK_NEEDS_REDO)
{
- Page page = BufferGetPage(buffer);
+ Page page = BufferGetPage(buffer, NULL, NULL,
+ BGP_NO_SNAPSHOT_TEST);
SpGistPageOpaque opaque = SpGistPageGetOpaque(page);
int i;