diff options
Diffstat (limited to 'src/backend/utils')
-rw-r--r-- | src/backend/utils/adt/pgstatfuncs.c | 2 | ||||
-rw-r--r-- | src/backend/utils/init/miscinit.c | 55 | ||||
-rw-r--r-- | src/backend/utils/misc/ps_status.c | 11 |
3 files changed, 65 insertions, 3 deletions
diff --git a/src/backend/utils/adt/pgstatfuncs.c b/src/backend/utils/adt/pgstatfuncs.c index 54d26732541..cea01534a5e 100644 --- a/src/backend/utils/adt/pgstatfuncs.c +++ b/src/backend/utils/adt/pgstatfuncs.c @@ -841,7 +841,7 @@ pg_stat_get_activity(PG_FUNCTION_ARGS) } else values[17] = - CStringGetTextDatum(pgstat_get_backend_desc(beentry->st_backendType)); + CStringGetTextDatum(GetBackendTypeDesc(beentry->st_backendType)); /* SSL information */ if (beentry->st_ssl) diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index cd099b0c709..a7b7b12249d 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -57,6 +57,8 @@ ProcessingMode Mode = InitProcessing; +BackendType MyBackendType; + /* List of lock files to be removed at proc exit */ static List *lock_files = NIL; @@ -187,6 +189,59 @@ SwitchBackToLocalLatch(void) SetLatch(MyLatch); } +const char * +GetBackendTypeDesc(BackendType backendType) +{ + const char *backendDesc = "unknown process type"; + + switch (backendType) + { + case B_INVALID: + backendDesc = "not initialized"; + break; + case B_AUTOVAC_LAUNCHER: + backendDesc = "autovacuum launcher"; + break; + case B_AUTOVAC_WORKER: + backendDesc = "autovacuum worker"; + break; + case B_BACKEND: + backendDesc = "client backend"; + break; + case B_BG_WORKER: + backendDesc = "background worker"; + break; + case B_BG_WRITER: + backendDesc = "background writer"; + break; + case B_CHECKPOINTER: + backendDesc = "checkpointer"; + break; + case B_STARTUP: + backendDesc = "startup"; + break; + case B_WAL_RECEIVER: + backendDesc = "walreceiver"; + break; + case B_WAL_SENDER: + backendDesc = "walsender"; + break; + case B_WAL_WRITER: + backendDesc = "walwriter"; + break; + case B_ARCHIVER: + backendDesc = "archiver"; + break; + case B_STATS_COLLECTOR: + backendDesc = "stats collector"; + break; + case B_LOGGER: + backendDesc = "logger"; + break; + } + + return backendDesc; +} /* ---------------------------------------------------------------- * database path / name support stuff diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c index 8b160c0b405..584d7709575 100644 --- a/src/backend/utils/misc/ps_status.c +++ b/src/backend/utils/misc/ps_status.c @@ -28,6 +28,7 @@ #include "libpq/libpq.h" #include "miscadmin.h" +#include "pgstat.h" #include "utils/guc.h" #include "utils/ps_status.h" @@ -247,14 +248,20 @@ save_ps_display_args(int argc, char **argv) /* * Call this once during subprocess startup to set the identification - * values. At this point, the original argv[] array may be overwritten. + * values. + * + * If fixed_part is NULL, a default will be obtained from MyBackendType. + * + * At this point, the original argv[] array may be overwritten. */ void init_ps_display(const char *fixed_part) { bool save_update_process_title; - Assert(fixed_part); + Assert(fixed_part || MyBackendType); + if (!fixed_part) + fixed_part = GetBackendTypeDesc(MyBackendType); #ifndef PS_USE_NONE /* no ps display for stand-alone backend */ |