diff options
author | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2024-03-03 19:38:22 +0200 |
---|---|---|
committer | Heikki Linnakangas <heikki.linnakangas@iki.fi> | 2024-03-03 19:38:22 +0200 |
commit | 024c521117579a6d356050ad3d78fdc95e44eefa (patch) | |
tree | 27a2d9588eefc43c4bc3ac7b31f8a6740a2de34b /src/backend/utils/adt/lockfuncs.c | |
parent | ab355e3a88de745607f6dd4c21f0119b5c68f2ad (diff) | |
download | postgresql-024c521117579a6d356050ad3d78fdc95e44eefa.tar.gz postgresql-024c521117579a6d356050ad3d78fdc95e44eefa.zip |
Replace BackendIds with 0-based ProcNumbers
Now that BackendId was just another index into the proc array, it was
redundant with the 0-based proc numbers used in other places. Replace
all usage of backend IDs with proc numbers.
The only place where the term "backend id" remains is in a few pgstat
functions that expose backend IDs at the SQL level. Those IDs are now
in fact 0-based ProcNumbers too, but the documentation still calls
them "backend ids". That term still seems appropriate to describe what
the numbers are, so I let it be.
One user-visible effect is that pg_temp_0 is now a valid temp schema
name, for backend with ProcNumber 0.
Reviewed-by: Andres Freund
Discussion: https://www.postgresql.org/message-id/8171f1aa-496f-46a6-afc3-c46fe7a9b407@iki.fi
Diffstat (limited to 'src/backend/utils/adt/lockfuncs.c')
-rw-r--r-- | src/backend/utils/adt/lockfuncs.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/utils/adt/lockfuncs.c b/src/backend/utils/adt/lockfuncs.c index bbe5cc0806e..8624470b1d9 100644 --- a/src/backend/utils/adt/lockfuncs.c +++ b/src/backend/utils/adt/lockfuncs.c @@ -73,15 +73,16 @@ typedef struct * This is currently only used in pg_lock_status, so we put it here. */ static Datum -VXIDGetDatum(BackendId bid, LocalTransactionId lxid) +VXIDGetDatum(ProcNumber procNumber, LocalTransactionId lxid) { /* - * The representation is "<bid>/<lxid>", decimal and unsigned decimal - * respectively. Note that elog.c also knows how to format a vxid. + * The representation is "<procNumber>/<lxid>", decimal and unsigned + * decimal respectively. Note that elog.c also knows how to format a + * vxid. */ char vxidstr[32]; - snprintf(vxidstr, sizeof(vxidstr), "%d/%u", bid, lxid); + snprintf(vxidstr, sizeof(vxidstr), "%d/%u", procNumber, lxid); return CStringGetTextDatum(vxidstr); } @@ -353,7 +354,7 @@ pg_lock_status(PG_FUNCTION_ARGS) break; } - values[10] = VXIDGetDatum(instance->vxid.backendId, instance->vxid.localTransactionId); + values[10] = VXIDGetDatum(instance->vxid.procNumber, instance->vxid.localTransactionId); if (instance->pid != 0) values[11] = Int32GetDatum(instance->pid); else @@ -419,7 +420,7 @@ pg_lock_status(PG_FUNCTION_ARGS) nulls[9] = true; /* objsubid */ /* lock holder */ - values[10] = VXIDGetDatum(xact->vxid.backendId, + values[10] = VXIDGetDatum(xact->vxid.procNumber, xact->vxid.localTransactionId); if (xact->pid != 0) values[11] = Int32GetDatum(xact->pid); |