From: Heikki Linnakangas Date: Tue, 7 Jul 2026 21:25:24 +0000 (+0300) Subject: Deduplicate metapage sanity checks in _bt_gettrueroot() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=99319edb8f5e9c4363ac79088e58a70570d728bb;p=thirdparty%2Fpostgresql.git Deduplicate metapage sanity checks in _bt_gettrueroot() Replace the metapage sanity checks in _bt_gettrueroot() with a call to _bt_getmeta(), which does exactly the same checks. Author: Chao Li Reviewed-by: Neil Chen Discussion: https://www.postgresql.org/message-id/CAEoWx2nisjqs4iC9o4Hu7-Ab767=cMZZzmhBGb8SaQtMMmVqPQ@mail.gmail.com --- diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 0547038616e..406088dcb57 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -585,8 +585,6 @@ Buffer _bt_gettrueroot(Relation rel) { Buffer metabuf; - Page metapg; - BTPageOpaque metaopaque; Buffer rootbuf; Page rootpage; BTPageOpaque rootopaque; @@ -605,25 +603,7 @@ _bt_gettrueroot(Relation rel) rel->rd_amcache = NULL; metabuf = _bt_getbuf(rel, BTREE_METAPAGE, BT_READ); - metapg = BufferGetPage(metabuf); - metaopaque = BTPageGetOpaque(metapg); - metad = BTPageGetMeta(metapg); - - if (!P_ISMETA(metaopaque) || - metad->btm_magic != BTREE_MAGIC) - ereport(ERROR, - (errcode(ERRCODE_INDEX_CORRUPTED), - errmsg("index \"%s\" is not a btree", - RelationGetRelationName(rel)))); - - if (metad->btm_version < BTREE_MIN_VERSION || - metad->btm_version > BTREE_VERSION) - ereport(ERROR, - (errcode(ERRCODE_INDEX_CORRUPTED), - errmsg("version mismatch in index \"%s\": file version %d, " - "current version %d, minimal supported version %d", - RelationGetRelationName(rel), - metad->btm_version, BTREE_VERSION, BTREE_MIN_VERSION))); + metad = _bt_getmeta(rel, metabuf); /* if no root page initialized yet, fail */ if (metad->btm_root == P_NONE)