Skip to content

Commit 265ea56

Browse files
committed
Set right-links during sorted GiST index build.
This is not strictly necessary, as the right-links are only needed by scans that are concurrent with page splits, and neither scans or page splits can happen during sorted index build. But it seems like a good idea to set them anyway, if we e.g. want to add a check to amcheck in the future to verify that the chain of right-links is complete. Author: Andrey Borodin Discussion: https://www.postgresql.org/message-id/4D68C21F-9FB9-41DA-B663-FDFC8D143788%40yandex-team.ru
1 parent 6b1c5ca commit 265ea56

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

src/backend/access/gist/gistbuild.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,19 @@ gist_indexsortbuild_pagestate_flush(GISTBuildState *state,
540540
/* Re-initialize the page buffer for next page on this level. */
541541
pagestate->page = palloc(BLCKSZ);
542542
gistinitpage(pagestate->page, isleaf ? F_LEAF : 0);
543+
544+
/*
545+
* Set the right link to point to the previous page. This is just for
546+
* debugging purposes: GiST only follows the right link if a page is split
547+
* concurrently to a scan, and that cannot happen during index build.
548+
*
549+
* It's a bit counterintuitive that we set the right link on the new page
550+
* to point to the previous page, and not the other way round. But GiST
551+
* pages are not ordered like B-tree pages are, so as long as the
552+
* right-links form a chain through all the pages in the same level, the
553+
* order doesn't matter.
554+
*/
555+
GistPageGetOpaque(pagestate->page)->rightlink = blkno;
543556
}
544557

545558
static void

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