pgsql: Fix relptr's encoding of the base address.

From: Thomas Munro <tmunro(at)postgresql(dot)org>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Fix relptr's encoding of the base address.
Date: 2022-06-27 01:11:39
Message-ID: E1o5dHv-001zAo-FT@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Fix relptr's encoding of the base address.

Previously, we encoded both NULL and the first byte at the base address
as 0. That confusion led to the assertion in commit e07d4ddc, which
failed when min_dynamic_shared_memory was used. Give them distinct
encodings, by switching to 1-based offsets for non-NULL pointers. Also
improve macro hygiene in passing (missing/misplaced parentheses), and
remove open-coded access to the raw offset value from freepage.c/h.

Although e07d4ddc was back-patched to 10, the only code that actually
makes use of relptr at the base address arrived in 84b1c63a, so no need
to back-patch further than 14 for now.

Reported-by: Justin Pryzby <pryzby(at)telsasoft(dot)com>
Reviewed-by: Robert Haas <robertmhaas(at)gmail(dot)com>
Discussion: https://postgr.es/m/20220519193839.GT19626%40telsasoft.com

Branch
------
REL_14_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/99504ff8265eac35da5af06f4ce99196bbdc0239

Modified Files
--------------
src/backend/utils/mmgr/freepage.c | 6 +++---
src/include/utils/freepage.h | 4 ++--
src/include/utils/relptr.h | 15 +++++++++------
3 files changed, 14 insertions(+), 11 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2022-06-27 05:25:40 pgsql: Fix visibility check when XID is committed in CLOG but not in pr
Previous Message Thomas Munro 2022-06-27 01:11:26 pgsql: Fix relptr's encoding of the base address.