Hello, Pursuant to my comments in [1], I attach a patch that restricts the use of translated process types as indicated in $SUBJECT. This adds a separate column to the process type list, mostly extracted from Euler's patch, not marked for translation, and uses it in a couple of places. I think this is more reasonable. I chose to CC Heikki here because the business with translating these strings was, as I recall, his doing ...
[1] https://postgr.es/m/[email protected] -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/ "No tengo por qué estar de acuerdo con lo que pienso" (Carlos Caszeli)
>From fc5805ae107eb9d477b69f4ef9bc3819de3bf9f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Herrera?= <[email protected]> Date: Wed, 10 Dec 2025 10:59:48 +0100 Subject: [PATCH 1/2] add name column to proctypes --- src/backend/postmaster/launch_backend.c | 2 +- src/backend/utils/init/miscinit.c | 2 +- src/include/postmaster/proctypelist.h | 43 ++++++++++++------------- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/src/backend/postmaster/launch_backend.c b/src/backend/postmaster/launch_backend.c index 98f7c4848c9..6296ef1a1e3 100644 --- a/src/backend/postmaster/launch_backend.c +++ b/src/backend/postmaster/launch_backend.c @@ -179,7 +179,7 @@ typedef struct } child_process_kind; static child_process_kind child_process_kinds[] = { -#define PG_PROCTYPE(bktype, description, main_func, shmem_attach) \ +#define PG_PROCTYPE(bktype, name, description, main_func, shmem_attach) \ [bktype] = {description, main_func, shmem_attach}, #include "postmaster/proctypelist.h" #undef PG_PROCTYPE diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index fec79992c8d..4199f69ccdd 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -266,7 +266,7 @@ GetBackendTypeDesc(BackendType backendType) switch (backendType) { -#define PG_PROCTYPE(bktype, description, main_func, shmem_attach) \ +#define PG_PROCTYPE(bktype, name, description, main_func, shmem_attach) \ case bktype: backendDesc = description; break; #include "postmaster/proctypelist.h" #undef PG_PROCTYPE diff --git a/src/include/postmaster/proctypelist.h b/src/include/postmaster/proctypelist.h index 242862451d8..0d39c001873 100644 --- a/src/include/postmaster/proctypelist.h +++ b/src/include/postmaster/proctypelist.h @@ -25,27 +25,24 @@ */ /* - * List of process types (symbol, description, Main function, shmem_attach) - * entries. + * List of process type entries: + * bktype, bkname, description, main_func, shmem_attach */ - - -/* bktype, description, main_func, shmem_attach */ -PG_PROCTYPE(B_ARCHIVER, gettext_noop("archiver"), PgArchiverMain, true) -PG_PROCTYPE(B_AUTOVAC_LAUNCHER, gettext_noop("autovacuum launcher"), AutoVacLauncherMain, true) -PG_PROCTYPE(B_AUTOVAC_WORKER, gettext_noop("autovacuum worker"), AutoVacWorkerMain, true) -PG_PROCTYPE(B_BACKEND, gettext_noop("client backend"), BackendMain, true) -PG_PROCTYPE(B_BG_WORKER, gettext_noop("background worker"), BackgroundWorkerMain, true) -PG_PROCTYPE(B_BG_WRITER, gettext_noop("background writer"), BackgroundWriterMain, true) -PG_PROCTYPE(B_CHECKPOINTER, gettext_noop("checkpointer"), CheckpointerMain, true) -PG_PROCTYPE(B_DEAD_END_BACKEND, gettext_noop("dead-end client backend"), BackendMain, true) -PG_PROCTYPE(B_INVALID, gettext_noop("unrecognized"), NULL, false) -PG_PROCTYPE(B_IO_WORKER, gettext_noop("io worker"), IoWorkerMain, true) -PG_PROCTYPE(B_LOGGER, gettext_noop("syslogger"), SysLoggerMain, false) -PG_PROCTYPE(B_SLOTSYNC_WORKER, gettext_noop("slotsync worker"), ReplSlotSyncWorkerMain, true) -PG_PROCTYPE(B_STANDALONE_BACKEND, gettext_noop("standalone backend"), NULL, false) -PG_PROCTYPE(B_STARTUP, gettext_noop("startup"), StartupProcessMain, true) -PG_PROCTYPE(B_WAL_RECEIVER, gettext_noop("walreceiver"), WalReceiverMain, true) -PG_PROCTYPE(B_WAL_SENDER, gettext_noop("walsender"), NULL, true) -PG_PROCTYPE(B_WAL_SUMMARIZER, gettext_noop("walsummarizer"), WalSummarizerMain, true) -PG_PROCTYPE(B_WAL_WRITER, gettext_noop("walwriter"), WalWriterMain, true) +PG_PROCTYPE(B_ARCHIVER, "archiver", gettext_noop("archiver"), PgArchiverMain, true) +PG_PROCTYPE(B_AUTOVAC_LAUNCHER, "autovacuum", gettext_noop("autovacuum launcher"), AutoVacLauncherMain, true) +PG_PROCTYPE(B_AUTOVAC_WORKER, "autovacuum", gettext_noop("autovacuum worker"), AutoVacWorkerMain, true) +PG_PROCTYPE(B_BACKEND, "backend", gettext_noop("client backend"), BackendMain, true) +PG_PROCTYPE(B_BG_WORKER, "bgworker", gettext_noop("background worker"), BackgroundWorkerMain, true) +PG_PROCTYPE(B_BG_WRITER, "bgwriter", gettext_noop("background writer"), BackgroundWriterMain, true) +PG_PROCTYPE(B_CHECKPOINTER, "checkpointer", gettext_noop("checkpointer"), CheckpointerMain, true) +PG_PROCTYPE(B_DEAD_END_BACKEND, "backend", gettext_noop("dead-end client backend"), BackendMain, true) +PG_PROCTYPE(B_INVALID, "postmaster", gettext_noop("unrecognized"), NULL, false) +PG_PROCTYPE(B_IO_WORKER, "ioworker", gettext_noop("io worker"), IoWorkerMain, true) +PG_PROCTYPE(B_LOGGER, "syslogger", gettext_noop("syslogger"), SysLoggerMain, false) +PG_PROCTYPE(B_SLOTSYNC_WORKER, "slotsyncworker", gettext_noop("slotsync worker"), ReplSlotSyncWorkerMain, true) +PG_PROCTYPE(B_STANDALONE_BACKEND, "backend", gettext_noop("standalone backend"), NULL, false) +PG_PROCTYPE(B_STARTUP, "startup", gettext_noop("startup"), StartupProcessMain, true) +PG_PROCTYPE(B_WAL_RECEIVER, "walreceiver", gettext_noop("walreceiver"), WalReceiverMain, true) +PG_PROCTYPE(B_WAL_SENDER, "walsender", gettext_noop("walsender"), NULL, true) +PG_PROCTYPE(B_WAL_SUMMARIZER, "walsummarizer", gettext_noop("walsummarizer"), WalSummarizerMain, true) +PG_PROCTYPE(B_WAL_WRITER, "walwriter", gettext_noop("walwriter"), WalWriterMain, true) -- 2.47.3
>From 165b5936200015a90b9d12441be94f7368d32e4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Herrera?= <[email protected]> Date: Wed, 10 Dec 2025 11:18:36 +0100 Subject: [PATCH 2/2] use the backend name in a couple of places --- src/backend/tcop/backend_startup.c | 2 +- src/backend/utils/error/elog.c | 2 +- src/backend/utils/init/miscinit.c | 18 ++++++++++++++++++ src/backend/utils/misc/ps_status.c | 2 +- src/include/miscadmin.h | 1 + 5 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/backend/tcop/backend_startup.c b/src/backend/tcop/backend_startup.c index 14d5fc0b196..bed0ca28d1c 100644 --- a/src/backend/tcop/backend_startup.c +++ b/src/backend/tcop/backend_startup.c @@ -377,7 +377,7 @@ BackendInitialize(ClientSocket *client_sock, CAC_state cac) */ initStringInfo(&ps_data); if (am_walsender) - appendStringInfo(&ps_data, "%s ", GetBackendTypeDesc(B_WAL_SENDER)); + appendStringInfo(&ps_data, "%s ", GetBackendTypeName(B_WAL_SENDER)); appendStringInfo(&ps_data, "%s ", port->user_name); if (port->database_name[0] != '\0') appendStringInfo(&ps_data, "%s ", port->database_name); diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c index 4c5a9283208..72e76dbcdfd 100644 --- a/src/backend/utils/error/elog.c +++ b/src/backend/utils/error/elog.c @@ -2781,7 +2781,7 @@ get_backend_type_for_log(void) else if (MyBackendType == B_BG_WORKER) backend_type_str = MyBgworkerEntry->bgw_type; else - backend_type_str = GetBackendTypeDesc(MyBackendType); + backend_type_str = GetBackendTypeName(MyBackendType); return backend_type_str; } diff --git a/src/backend/utils/init/miscinit.c b/src/backend/utils/init/miscinit.c index 4199f69ccdd..62f087d0bd9 100644 --- a/src/backend/utils/init/miscinit.c +++ b/src/backend/utils/init/miscinit.c @@ -274,6 +274,24 @@ GetBackendTypeDesc(BackendType backendType) return backendDesc; } +/* + * Return the non-translated, short name of a BackendType. + */ +const char * +GetBackendTypeName(BackendType backendType) +{ + const char *backendName = "unknown"; + + switch (backendType) + { +#define PG_PROCTYPE(bktype, name, description, main_fun, shmem_attach) \ + case bktype: backendName = name; break; +#include "postmaster/proctypelist.h" +#undef PG_PROCTYPE + } + return backendName; +} + /* ---------------------------------------------------------------- * database path / name support stuff * ---------------------------------------------------------------- diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c index 5d8de92a57b..acefd1204d3 100644 --- a/src/backend/utils/misc/ps_status.c +++ b/src/backend/utils/misc/ps_status.c @@ -290,7 +290,7 @@ init_ps_display(const char *fixed_part) Assert(fixed_part || MyBackendType); if (!fixed_part) - fixed_part = GetBackendTypeDesc(MyBackendType); + fixed_part = GetBackendTypeName(MyBackendType); #ifndef PS_USE_NONE /* no ps display for stand-alone backend */ diff --git a/src/include/miscadmin.h b/src/include/miscadmin.h index 9a7d733ddef..42d6af748ec 100644 --- a/src/include/miscadmin.h +++ b/src/include/miscadmin.h @@ -406,6 +406,7 @@ extern PGDLLIMPORT BackendType MyBackendType; (backend_type == B_BACKEND || backend_type == B_WAL_SENDER) extern const char *GetBackendTypeDesc(BackendType backendType); +extern const char *GetBackendTypeName(BackendType backendType); extern void SetDatabasePath(const char *path); extern void checkDataDir(void); -- 2.47.3
