aboutsummaryrefslogtreecommitdiff
path: root/src/include/access/gist_private.h
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2016-09-20 11:38:25 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2016-09-20 11:40:20 +0300
commitf0a86dfdb465d4d18b8010000205224733d9848e (patch)
treef5cc1122b07a9980b52e303861a7fb116734c602 /src/include/access/gist_private.h
parentedb5c4097604c90e12649cdf24accc6052140b78 (diff)
downloadpostgresql-f0a86dfdb465d4d18b8010000205224733d9848e.tar.gz
postgresql-f0a86dfdb465d4d18b8010000205224733d9848e.zip
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.
Diffstat (limited to 'src/include/access/gist_private.h')
-rw-r--r--src/include/access/gist_private.h18
1 files changed, 7 insertions, 11 deletions
diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h
index 4f1a5c33eae..8eac5ebd36b 100644
--- a/src/include/access/gist_private.h
+++ b/src/include/access/gist_private.h
@@ -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,