Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 4c45832

Browse files
committed
Concurrency... Highest one...
DO NOT EVEN TRY TO DO PageGetMaxOffsetNumber BEFORE LockBuffer! -:)
1 parent 8864ee0 commit 4c45832

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/backend/access/nbtree/nbtree.c

+8-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.40 1999/05/25 22:04:13 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtree.c,v 1.41 1999/06/07 15:14:54 vadim Exp $
1212
*
1313
* NOTES
1414
* This file contains only the public interface routines.
@@ -618,16 +618,19 @@ _bt_restscan(IndexScanDesc scan)
618618
Relation rel = scan->relation;
619619
BTScanOpaque so = (BTScanOpaque) scan->opaque;
620620
Buffer buf = so->btso_curbuf;
621-
Page page = BufferGetPage(buf);
621+
Page page;
622622
ItemPointer current = &(scan->currentItemData);
623623
OffsetNumber offnum = ItemPointerGetOffsetNumber(current),
624-
maxoff = PageGetMaxOffsetNumber(page);
625-
BTPageOpaque opaque = (BTPageOpaque) PageGetSpecialPointer(page);
624+
maxoff;
625+
BTPageOpaque opaque;
626626
ItemPointerData target = so->curHeapIptr;
627627
BTItem item;
628628
BlockNumber blkno;
629629

630-
LockBuffer(buf, BT_READ);
630+
LockBuffer(buf, BT_READ); /* lock buffer first! */
631+
page = BufferGetPage(buf);
632+
maxoff = PageGetMaxOffsetNumber(page);
633+
opaque = (BTPageOpaque) PageGetSpecialPointer(page);
631634

632635
/*
633636
* We use this as flag when first index tuple on page is deleted but

0 commit comments

Comments
 (0)