Skip to content

Commit 846cfe0

Browse files
Fix obsolete _bt_first comments.
_bt_first doesn't necessarily hold onto a buffer pin on success exit. Fix header comments that claimed that we'll always hold onto a pin. Oversight in commit 2ed5b87.
1 parent 0d82970 commit 846cfe0

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

src/backend/access/nbtree/nbtsearch.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -862,14 +862,15 @@ _bt_compare(Relation rel,
862862
* We need to be clever about the direction of scan, the search
863863
* conditions, and the tree ordering. We find the first item (or,
864864
* if backwards scan, the last item) in the tree that satisfies the
865-
* qualifications in the scan key. On success exit, the page containing
866-
* the current index tuple is pinned but not locked, and data about
867-
* the matching tuple(s) on the page has been loaded into so->currPos.
865+
* qualifications in the scan key. On success exit, data about the
866+
* matching tuple(s) on the page has been loaded into so->currPos. We'll
867+
* drop all locks and hold onto a pin on page's buffer, except when
868+
* _bt_drop_lock_and_maybe_pin dropped the pin to avoid blocking VACUUM.
868869
* scan->xs_heaptid is set to the heap TID of the current tuple, and if
869870
* requested, scan->xs_itup points to a copy of the index tuple.
870871
*
871872
* If there are no matching items in the index, we return false, with no
872-
* pins or locks held.
873+
* pins or locks held. so->currPos will remain invalid.
873874
*
874875
* Note that scan->keyData[], and the so->keyData[] scankey built from it,
875876
* are both search-type scankeys (see nbtree/README for more about this).
@@ -1470,6 +1471,8 @@ _bt_next(IndexScanDesc scan, ScanDirection dir)
14701471
BTScanOpaque so = (BTScanOpaque) scan->opaque;
14711472
BTScanPosItem *currItem;
14721473

1474+
Assert(BTScanPosIsValid(so->currPos));
1475+
14731476
/*
14741477
* Advance to next tuple on current page; or if there's no more, try to
14751478
* step to the next page with data.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy