Fix GIST readme on LSN vs NSN

From: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Fix GIST readme on LSN vs NSN
Date: 2023-09-18 11:09:43
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

The GiST README says:

> If the F_FOLLOW_RIGHT flag is not set, a scan compares the NSN on the
> child and the LSN it saw in the parent. If NSN < LSN, the scan looked
> at the parent page before the downlink was inserted, so it should
> follow the rightlink. Otherwise the scan saw the downlink in the
> parent page, and will/did follow that as usual.

While the code does this (in gistget.c):

> if (!XLogRecPtrIsInvalid(pageItem->data.parentlsn) &&
> (GistFollowRight(page) ||
> pageItem->data.parentlsn < GistPageGetNSN(page)) &&
> opaque->rightlink != InvalidBlockNumber /* sanity check */ )
> {
> /* There was a page split, follow right link to add pages */

Note the comparison on LSN and NSN. The code seems correct, but the
README got it backwards.

The narrow fix would be to change the "NSN < LSN" to "LSN < NSN" in the
README. But I propose the attached patch to reword the sentence a little

Heikki Linnakangas
Neon (

Attachment Content-Type Size
fix-gist-readme-nsn-lsn.patch text/x-patch 1.2 KB


Browse pgsql-hackers by date

  From Date Subject
Next Message Erik Rijkers 2023-09-18 11:14:52 Re: remaining sql/json patches
Previous Message Andy Fan 2023-09-18 10:55:46 Re: make add_paths_to_append_rel aware of startup cost