diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-06 22:39:21 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-06 22:39:21 +0000 |
commit | 6236991143aa9e6a10121431451972c2991533c7 (patch) | |
tree | 40f1d49e7e88e0decc785e092097479567734384 /src/backend/access/gist/gistget.c | |
parent | 766dc45d9f133aaa12d952052e1e512dbf3f5ec0 (diff) | |
download | postgresql-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.c | 10 |
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; |