From 4c45832c39eb4c6f74ecf507a354697ac9056798 Mon Sep 17 00:00:00 2001 From: "Vadim B. Mikheev" Date: Mon, 7 Jun 1999 15:14:54 +0000 Subject: [PATCH] Concurrency... Highest one... DO NOT EVEN TRY TO DO PageGetMaxOffsetNumber BEFORE LockBuffer! -:) --- src/backend/access/nbtree/nbtree.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 700b11380a..59fa09094e 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.40 1999/05/25 22:04:13 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.41 1999/06/07 15:14:54 vadim Exp $ * * NOTES * This file contains only the public interface routines. @@ -618,16 +618,19 @@ _bt_restscan(IndexScanDesc scan) Relation rel = scan->relation; BTScanOpaque so = (BTScanOpaque) scan->opaque; Buffer buf = so->btso_curbuf; - Page page = BufferGetPage(buf); + Page page; ItemPointer current = &(scan->currentItemData); OffsetNumber offnum = ItemPointerGetOffsetNumber(current), - maxoff = PageGetMaxOffsetNumber(page); - BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page); + maxoff; + BTPageOpaque opaque; ItemPointerData target = so->curHeapIptr; BTItem item; BlockNumber blkno; - LockBuffer(buf, BT_READ); + LockBuffer(buf, BT_READ); /* lock buffer first! */ + page = BufferGetPage(buf); + maxoff = PageGetMaxOffsetNumber(page); + opaque = (BTPageOpaque) PageGetSpecialPointer(page); /* * We use this as flag when first index tuple on page is deleted but -- 2.11.0