diff options
Diffstat (limited to 'src/backend/access/gist/gistget.c')
-rw-r--r-- | src/backend/access/gist/gistget.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c index feeb84d38d7..7c041f480bf 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.2.2 2008/08/23 10:43:58 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistget.c,v 1.52.2.3 2008/10/22 12:56:25 teodor Exp $ * *------------------------------------------------------------------------- */ @@ -153,7 +153,11 @@ gistnext(IndexScanDesc scan, ScanDirection dir, ItemPointer tids, int maxtids, b { while( ntids < maxtids && so->curPageData < so->nPageData ) { - tids[ ntids ] = scan->xs_ctup.t_self = so->pageData[ so->curPageData ]; + tids[ ntids ] = scan->xs_ctup.t_self = so->pageData[ so->curPageData ].heapPtr; + ItemPointerSet(&scan->currentItemData, + BufferGetBlockNumber(so->curbuf), + so->pageData[ so->curPageData ].pageOffset); + so->curPageData ++; ntids++; @@ -246,8 +250,13 @@ gistnext(IndexScanDesc scan, ScanDirection dir, ItemPointer tids, int maxtids, b { while( ntids < maxtids && so->curPageData < so->nPageData ) { - tids[ ntids ] = scan->xs_ctup.t_self = so->pageData[ so->curPageData ]; + tids[ ntids ] = scan->xs_ctup.t_self = + so->pageData[ so->curPageData ].heapPtr; + ItemPointerSet(&scan->currentItemData, + BufferGetBlockNumber(so->curbuf), + so->pageData[ so->curPageData ].pageOffset); + so->curPageData ++; ntids++; } @@ -291,13 +300,11 @@ gistnext(IndexScanDesc scan, ScanDirection dir, ItemPointer tids, int maxtids, b * we can efficiently resume the index scan later. */ - ItemPointerSet(&(scan->currentItemData), - BufferGetBlockNumber(so->curbuf), n); - if (!(ignore_killed_tuples && ItemIdDeleted(PageGetItemId(p, n)))) { it = (IndexTuple) PageGetItem(p, PageGetItemId(p, n)); - so->pageData[ so->nPageData ] = it->t_tid; + so->pageData[ so->nPageData ].heapPtr = it->t_tid; + so->pageData[ so->nPageData ].pageOffset = n; so->nPageData ++; } } |