summaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistget.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-11-06 22:39:21 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-11-06 22:39:21 +0000
commit6236991143aa9e6a10121431451972c2991533c7 (patch)
tree40f1d49e7e88e0decc785e092097479567734384 /src/backend/access/gist/gistget.c
parent766dc45d9f133aaa12d952052e1e512dbf3f5ec0 (diff)
downloadpostgresql-6236991143aa9e6a10121431451972c2991533c7.tar.gz
Add simple sanity checks on newly-read pages to GiST, too.
Diffstat (limited to 'src/backend/access/gist/gistget.c')
-rw-r--r--src/backend/access/gist/gistget.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 5ae48bd66e..bc8f9e0c07 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -8,7 +8,7 @@
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/access/gist/gistget.c,v 1.52 2005/10/06 02:29:07 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/access/gist/gistget.c,v 1.53 2005/11/06 22:39:20 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@@ -40,6 +40,7 @@ killtuple(Relation r, GISTScanOpaque so, ItemPointer iptr)
maxoff;
LockBuffer(buffer, GIST_SHARE);
+ gistcheckpage(r, buffer);
p = (Page) BufferGetPage(buffer);
if (buffer == so->curbuf && XLByteEQ(so->stack->lsn, PageGetLSN(p)))
@@ -176,6 +177,7 @@ gistnext(IndexScanDesc scan, ScanDirection dir, ItemPointer tids, int maxtids, b
/* First of all, we need lock buffer */
Assert(so->curbuf != InvalidBuffer);
LockBuffer(so->curbuf, GIST_SHARE);
+ gistcheckpage(scan->indexRelation, so->curbuf);
p = BufferGetPage(so->curbuf);
opaque = GistPageGetOpaque(p);
resetoffset = false;
@@ -224,7 +226,8 @@ gistnext(IndexScanDesc scan, ScanDirection dir, ItemPointer tids, int maxtids, b
continue;
}
- if (!GistPageIsLeaf(p) || resetoffset || ItemPointerIsValid(&scan->currentItemData) == false)
+ if (!GistPageIsLeaf(p) || resetoffset ||
+ !ItemPointerIsValid(&scan->currentItemData))
{
if (ScanDirectionIsBackward(dir))
n = PageGetMaxOffsetNumber(p);
@@ -268,7 +271,8 @@ gistnext(IndexScanDesc scan, ScanDirection dir, ItemPointer tids, int maxtids, b
return ntids;
}
- so->curbuf = ReleaseAndReadBuffer(so->curbuf, scan->indexRelation,
+ so->curbuf = ReleaseAndReadBuffer(so->curbuf,
+ scan->indexRelation,
stk->block);
/* XXX go up */
break;