mirror of
https://github.com/postgres/postgres.git
synced 2025-08-24 09:27:52 +03:00
Fix outdated comments, GIST search queue is not an RBTree anymore.
The GiST search queue is implemented as a pairing heap rather than as
Red-Black Tree, since 9.5 (commit e7032610
). I neglected these comments
in that commit.
This commit is contained in:
@@ -105,15 +105,11 @@ typedef struct GISTSTATE
|
||||
* upper index pages; this rule avoids doing extra work during a search that
|
||||
* ends early due to LIMIT.
|
||||
*
|
||||
* To perform an ordered search, we use an RBTree to manage the distance-order
|
||||
* queue. Each GISTSearchTreeItem stores all unvisited items of the same
|
||||
* distance; they are GISTSearchItems chained together via their next fields.
|
||||
*
|
||||
* In a non-ordered search (no order-by operators), the RBTree degenerates
|
||||
* to a single item, which we use as a queue of unvisited index pages only.
|
||||
* In this case matched heap items from the current index leaf page are
|
||||
* remembered in GISTScanOpaqueData.pageData[] and returned directly from
|
||||
* there, instead of building a separate GISTSearchItem for each one.
|
||||
* To perform an ordered search, we use a pairing heap to manage the
|
||||
* distance-order queue. In a non-ordered search (no order-by operators),
|
||||
* we use it to return heap tuples before unvisited index pages, to
|
||||
* ensure depth-first order, but all entries are otherwise considered
|
||||
* equal.
|
||||
*/
|
||||
|
||||
/* Individual heap tuple to be visited */
|
||||
@@ -288,8 +284,8 @@ typedef struct
|
||||
#define GIST_ROOT_BLKNO 0
|
||||
|
||||
/*
|
||||
* Before PostgreSQL 9.1, we used rely on so-called "invalid tuples" on inner
|
||||
* pages to finish crash recovery of incomplete page splits. If a crash
|
||||
* Before PostgreSQL 9.1, we used to rely on so-called "invalid tuples" on
|
||||
* inner pages to finish crash recovery of incomplete page splits. If a crash
|
||||
* happened in the middle of a page split, so that the downlink pointers were
|
||||
* not yet inserted, crash recovery inserted a special downlink pointer. The
|
||||
* semantics of an invalid tuple was that it if you encounter one in a scan,
|
||||
|
Reference in New Issue
Block a user