From 9f6e79663d9988148051930009a1d400206d7671 Mon Sep 17 00:00:00 2001 From: "Chao Li (Evan)" Date: Wed, 25 Feb 2026 09:27:59 +0800 Subject: [PATCH v2 2/2] Fix stale comments about prepared-xact proc number layout Update two comments to match current ProcNumber/PGPROC layout after backend ID and proc-array indexing changes: - multixact.c: clarify that per-backend multixact horizon arrays include auxiliary process slots between normal backends and prepared xacts. - twophase.c: clarify that dummy proc numbers for prepared transactions start at MaxBackends + NUM_AUXILIARY_PROCS (not MaxBackends). Author: Chao Li Reviewed-by: Discussion: https://postgr.es/m/7acc94b0-ea82-4657-b1b0-77842cb7a60c@postgrespro.ru --- src/backend/access/transam/multixact.c | 7 ++++--- src/backend/access/transam/twophase.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/backend/access/transam/multixact.c b/src/backend/access/transam/multixact.c index 15dd928eb95..ddc79d19fd6 100644 --- a/src/backend/access/transam/multixact.c +++ b/src/backend/access/transam/multixact.c @@ -162,9 +162,10 @@ typedef struct MultiXactStateData * immediately following the MultiXactStateData struct. Each is indexed by * ProcNumber. * - * In both arrays, there's a slot for all normal backends - * (0..MaxBackends-1) followed by a slot for max_prepared_xacts prepared - * transactions. + * In both arrays, there are slots for all normal backends + * (0..MaxBackends-1), followed by slots for auxiliary processes + * (MaxBackends..MaxBackends + NUM_AUXILIARY_PROCS - 1), followed by slots + * for max_prepared_xacts prepared transactions. * * OldestMemberMXactId[k] is the oldest MultiXactId each backend's current * transaction(s) could possibly be a member of, or InvalidMultiXactId diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c index e4340b59640..8d1644f6988 100644 --- a/src/backend/access/transam/twophase.c +++ b/src/backend/access/transam/twophase.c @@ -900,9 +900,10 @@ TwoPhaseGetXidByVirtualXID(VirtualTransactionId vxid, * Get the dummy proc number for prepared transaction * * Dummy proc numbers are similar to proc numbers of real backends. They - * start at MaxBackends, and are unique across all currently active real - * backends and prepared transactions. If lock_held is set to true, - * TwoPhaseStateLock will not be taken, so the caller had better hold it. + * start at MaxBackends + NUM_AUXILIARY_PROCS, and are unique across all + * currently active real backends and prepared transactions. If lock_held + * is set to true, TwoPhaseStateLock will not be taken, so the caller had + * better hold it. */ ProcNumber TwoPhaseGetDummyProcNumber(FullTransactionId fxid, bool lock_held) -- 2.50.1 (Apple Git-155)