pgsql: Use actual backend IDs in pg_stat_get_backend_idset() and friend

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Use actual backend IDs in pg_stat_get_backend_idset() and friend
Date: 2022-09-29 16:14:47
Message-ID: E1odwBT-0009hL-0b@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Use actual backend IDs in pg_stat_get_backend_idset() and friends.

Up to now, the ID values returned by pg_stat_get_backend_idset() and
used by pg_stat_get_backend_activity() and allied functions were just
indexes into a local array of sessions seen by the last stats refresh.
This is problematic for a few reasons. The "ID" of a session can vary
over its existence, which is surprising. Also, while these numbers
often match the "backend ID" used for purposes like temp schema
assignment, that isn't reliably true. We can fairly cheaply switch
things around to make these numbers actually be the sessions' backend
IDs. The added test case illustrates that with this definition, the
temp schema used by a given session can be obtained given its PID.

While here, delete some dead code that guarded against getting
a NULL return from pgstat_fetch_stat_local_beentry(). That can't
happen as long as the caller is careful to pass an in-range array
index, as all the callers are. (This code may not have been dead
when written, but it surely is now.)

Nathan Bossart

Discussion: https://postgr.es/m/20220815205811.GA250990@nathanxps13

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/d7e39d72ca1c6f188b400d7d58813ff5b5b79064

Modified Files
--------------
doc/src/sgml/monitoring.sgml | 20 ++++++-----
src/backend/utils/activity/backend_status.c | 55 +++++++++++++++++++++++++----
src/backend/utils/adt/pgstatfuncs.c | 48 +++++++++----------------
src/include/utils/backend_status.h | 10 +++++-
src/test/regress/expected/stats.out | 15 ++++++--
src/test/regress/sql/stats.sql | 10 ++++--
6 files changed, 107 insertions(+), 51 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Tom Lane 2022-09-29 17:28:00 pgsql: Improve wording of log messages triggered by max_slot_wal_keep_s
Previous Message Etsuro Fujita 2022-09-29 08:04:30 pgsql: Update comment in ExecInsert() regarding batch insertion.