From 3d51cb5197ea7eabc65f5e0184aae60b8f7f9528 Mon Sep 17 00:00:00 2001 From: Nathan Bossart Date: Wed, 30 Aug 2023 14:46:52 -0700 Subject: [PATCH] Rename some support functions for pgstat* views. Presently, pgstat_fetch_stat_beentry() accepts a session's backend ID as its argument, and pgstat_fetch_stat_local_beentry() accepts a 1-based index in an internal array as its argument. The former is typically used wherever a user must provide a backend ID, and the latter is usually used internally when looping over all entries in the array. This difference was first introduced by d7e39d72ca. Before that commit, both functions accepted a 1-based index to the internal array. This commit renames these two functions to make it clear whether they use the backend ID or the 1-based index to look up the entry. This is preparatory work for a follow-up change that will introduce a function for looking up a LocalPgBackendStatus using a backend ID. Reviewed-by: Ian Barwick, Sami Imseih, Michael Paquier, Robert Haas Discussion: https://postgr.es/m/CAB8KJ%3Dj-ACb3H4L9a_b3ZG3iCYDW5aEu3WsPAzkm2S7JzS1Few%40mail.gmail.com Backpatch-through: 16 --- src/backend/utils/activity/backend_status.c | 28 ++++++++-------- src/backend/utils/adt/pgstatfuncs.c | 36 ++++++++++----------- src/include/utils/backend_status.h | 4 +-- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/backend/utils/activity/backend_status.c b/src/backend/utils/activity/backend_status.c index 38f91a495b..a4860b10fc 100644 --- a/src/backend/utils/activity/backend_status.c +++ b/src/backend/utils/activity/backend_status.c @@ -849,8 +849,8 @@ pgstat_read_current_status(void) /* * The BackendStatusArray index is exactly the BackendId of the * source backend. Note that this means localBackendStatusTable - * is in order by backend_id. pgstat_fetch_stat_beentry() depends - * on that. + * is in order by backend_id. pgstat_get_beentry_by_backend_id() + * depends on that. */ localentry->backend_id = i; BackendIdGetTransactionIds(i, @@ -1073,21 +1073,21 @@ cmp_lbestatus(const void *a, const void *b) } /* ---------- - * pgstat_fetch_stat_beentry() - + * pgstat_get_beentry_by_backend_id() - * * Support function for the SQL-callable pgstat* functions. Returns * our local copy of the current-activity entry for one backend, * or NULL if the given beid doesn't identify any known session. * * The beid argument is the BackendId of the desired session - * (note that this is unlike pgstat_fetch_stat_local_beentry()). + * (note that this is unlike pgstat_get_local_beentry_by_index()). * * NB: caller is responsible for a check if the user is permitted to see * this info (especially the querystring). * ---------- */ PgBackendStatus * -pgstat_fetch_stat_beentry(BackendId beid) +pgstat_get_beentry_by_backend_id(BackendId beid) { LocalPgBackendStatus key; LocalPgBackendStatus *ret; @@ -1111,13 +1111,13 @@ pgstat_fetch_stat_beentry(BackendId beid) /* ---------- - * pgstat_fetch_stat_local_beentry() - + * pgstat_get_local_beentry_by_index() - * - * Like pgstat_fetch_stat_beentry() but with locally computed additions (like - * xid and xmin values of the backend) + * Like pgstat_get_beentry_by_backend_id() but with locally computed additions + * (like xid and xmin values of the backend) * - * The beid argument is a 1-based index in the localBackendStatusTable - * (note that this is unlike pgstat_fetch_stat_beentry()). + * The idx argument is a 1-based index in the localBackendStatusTable + * (note that this is unlike pgstat_get_beentry_by_backend_id()). * Returns NULL if the argument is out of range (no current caller does that). * * NB: caller is responsible for a check if the user is permitted to see @@ -1125,14 +1125,14 @@ pgstat_fetch_stat_beentry(BackendId beid) * ---------- */ LocalPgBackendStatus * -pgstat_fetch_stat_local_beentry(int beid) +pgstat_get_local_beentry_by_index(int idx) { pgstat_read_current_status(); - if (beid < 1 || beid > localNumBackends) + if (idx < 1 || idx > localNumBackends) return NULL; - return &localBackendStatusTable[beid - 1]; + return &localBackendStatusTable[idx - 1]; } @@ -1141,7 +1141,7 @@ pgstat_fetch_stat_local_beentry(int beid) * * Support function for the SQL-callable pgstat* functions. Returns * the number of sessions known in the localBackendStatusTable, i.e. - * the maximum 1-based index to pass to pgstat_fetch_stat_local_beentry(). + * the maximum 1-based index to pass to pgstat_get_local_beentry_by_index(). * ---------- */ int diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 2b9742ad21..49cc887b97 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -211,7 +211,7 @@ pg_stat_get_backend_idset(PG_FUNCTION_ARGS) if (fctx[0] <= pgstat_fetch_stat_numbackends()) { /* do when there is more left to send */ - LocalPgBackendStatus *local_beentry = pgstat_fetch_stat_local_beentry(fctx[0]); + LocalPgBackendStatus *local_beentry = pgstat_get_local_beentry_by_index(fctx[0]); SRF_RETURN_NEXT(funcctx, Int32GetDatum(local_beentry->backend_id)); } @@ -264,7 +264,7 @@ pg_stat_get_progress_info(PG_FUNCTION_ARGS) bool nulls[PG_STAT_GET_PROGRESS_COLS] = {0}; int i; - local_beentry = pgstat_fetch_stat_local_beentry(curr_backend); + local_beentry = pgstat_get_local_beentry_by_index(curr_backend); beentry = &local_beentry->backendStatus; /* @@ -325,7 +325,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) const char *wait_event = NULL; /* Get the next one in the list */ - local_beentry = pgstat_fetch_stat_local_beentry(curr_backend); + local_beentry = pgstat_get_local_beentry_by_index(curr_backend); beentry = &local_beentry->backendStatus; /* If looking for specific PID, ignore all the others */ @@ -672,7 +672,7 @@ pg_stat_get_backend_pid(PG_FUNCTION_ARGS) int32 beid = PG_GETARG_INT32(0); PgBackendStatus *beentry; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); PG_RETURN_INT32(beentry->st_procpid); @@ -685,7 +685,7 @@ pg_stat_get_backend_dbid(PG_FUNCTION_ARGS) int32 beid = PG_GETARG_INT32(0); PgBackendStatus *beentry; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); PG_RETURN_OID(beentry->st_databaseid); @@ -698,7 +698,7 @@ pg_stat_get_backend_userid(PG_FUNCTION_ARGS) int32 beid = PG_GETARG_INT32(0); PgBackendStatus *beentry; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); PG_RETURN_OID(beentry->st_userid); @@ -727,7 +727,7 @@ pg_stat_get_backend_subxact(PG_FUNCTION_ARGS) BlessTupleDesc(tupdesc); - if ((local_beentry = pgstat_fetch_stat_local_beentry(beid)) != NULL) + if ((local_beentry = pgstat_get_local_beentry_by_index(beid)) != NULL) { /* Fill values and NULLs */ values[0] = Int32GetDatum(local_beentry->backend_subxact_count); @@ -752,7 +752,7 @@ pg_stat_get_backend_activity(PG_FUNCTION_ARGS) char *clipped_activity; text *ret; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) activity = ""; else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) activity = ""; @@ -776,7 +776,7 @@ pg_stat_get_backend_wait_event_type(PG_FUNCTION_ARGS) PGPROC *proc; const char *wait_event_type = NULL; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) wait_event_type = ""; else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) wait_event_type = ""; @@ -797,7 +797,7 @@ pg_stat_get_backend_wait_event(PG_FUNCTION_ARGS) PGPROC *proc; const char *wait_event = NULL; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) wait_event = ""; else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) wait_event = ""; @@ -818,7 +818,7 @@ pg_stat_get_backend_activity_start(PG_FUNCTION_ARGS) TimestampTz result; PgBackendStatus *beentry; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) @@ -844,7 +844,7 @@ pg_stat_get_backend_xact_start(PG_FUNCTION_ARGS) TimestampTz result; PgBackendStatus *beentry; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) @@ -866,7 +866,7 @@ pg_stat_get_backend_start(PG_FUNCTION_ARGS) TimestampTz result; PgBackendStatus *beentry; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) @@ -890,7 +890,7 @@ pg_stat_get_backend_client_addr(PG_FUNCTION_ARGS) char remote_host[NI_MAXHOST]; int ret; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) @@ -935,7 +935,7 @@ pg_stat_get_backend_client_port(PG_FUNCTION_ARGS) char remote_port[NI_MAXSERV]; int ret; - if ((beentry = pgstat_fetch_stat_beentry(beid)) == NULL) + if ((beentry = pgstat_get_beentry_by_backend_id(beid)) == NULL) PG_RETURN_NULL(); else if (!HAS_PGSTAT_PERMISSIONS(beentry->st_userid)) @@ -978,12 +978,12 @@ pg_stat_get_db_numbackends(PG_FUNCTION_ARGS) Oid dbid = PG_GETARG_OID(0); int32 result; int tot_backends = pgstat_fetch_stat_numbackends(); - int beid; + int idx; result = 0; - for (beid = 1; beid <= tot_backends; beid++) + for (idx = 1; idx <= tot_backends; idx++) { - LocalPgBackendStatus *local_beentry = pgstat_fetch_stat_local_beentry(beid); + LocalPgBackendStatus *local_beentry = pgstat_get_local_beentry_by_index(idx); if (local_beentry->backendStatus.st_databaseid == dbid) result++; diff --git a/src/include/utils/backend_status.h b/src/include/utils/backend_status.h index 77939a0aed..1718ff7ce6 100644 --- a/src/include/utils/backend_status.h +++ b/src/include/utils/backend_status.h @@ -333,8 +333,8 @@ extern uint64 pgstat_get_my_query_id(void); * ---------- */ extern int pgstat_fetch_stat_numbackends(void); -extern PgBackendStatus *pgstat_fetch_stat_beentry(BackendId beid); -extern LocalPgBackendStatus *pgstat_fetch_stat_local_beentry(int beid); +extern PgBackendStatus *pgstat_get_beentry_by_backend_id(BackendId beid); +extern LocalPgBackendStatus *pgstat_get_local_beentry_by_index(int idx); extern char *pgstat_clip_activity(const char *raw_activity);