aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/utils')
-rw-r--r--src/backend/utils/adt/pgstatfuncs.c2
-rw-r--r--src/backend/utils/init/miscinit.c55
-rw-r--r--src/backend/utils/misc/ps_status.c11
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 */