diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 09e6dfc..2426dfe 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -695,6 +695,23 @@ include 'filename' + + cluster_name (string) + + cluster_name configuration parameter + + + + Sets the cluster name that appears in the process title for all + processes in this cluster. No name is shown if this parameter is set + to the empty string '' (which is the default). The + process title is typically viewed by the ps command, or in + Windows by using the Process Explorer. + This parameter can only be set at server start. + + + + tcp_keepalives_idle (integer) diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 6902c23..c9dbb4c 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -443,6 +443,7 @@ int temp_file_limit = -1; int num_temp_buffers = 1024; +const char *cluster_name = ""; char *data_directory; char *ConfigFileName; char *HbaFileName; @@ -3090,6 +3091,17 @@ static struct config_string ConfigureNamesString[] = }, { + {"cluster_name", PGC_POSTMASTER, CONN_AUTH_SETTINGS, + gettext_noop("Sets the name of the cluster that appears in 'ps' output."), + NULL, + GUC_IS_NAME + }, + &cluster_name, + "", + NULL, NULL, NULL + }, + + { /* * Can't be set by ALTER SYSTEM as it can lead to recursive definition * of data_directory. diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index d109394..e4e0411 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -74,6 +74,8 @@ # (change requires restart) #bonjour_name = '' # defaults to the computer name # (change requires restart) +#cluster_name = '' # visible in ps output if set + # (change requires restart) # - Security and Authentication - diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c index 3aeceae..471d890 100644 --- a/src/backend/utils/misc/ps_status.c +++ b/src/backend/utils/misc/ps_status.c @@ -29,6 +29,7 @@ #include "libpq/libpq.h" #include "miscadmin.h" #include "utils/ps_status.h" +#include "utils/guc.h" extern char **environ; bool update_process_title = true; @@ -264,15 +265,24 @@ init_ps_display(const char *username, const char *dbname, * apparently setproctitle() already adds a `progname:' prefix to the ps * line */ - snprintf(ps_buffer, ps_buffer_size, - "%s %s %s ", - username, dbname, host_info); +#define PROGRAM_NAME_PREFIX "" #else - snprintf(ps_buffer, ps_buffer_size, - "postgres: %s %s %s ", - username, dbname, host_info); +#define PROGRAM_NAME_PREFIX "postgres: " #endif + if (*cluster_name == '\0') + { + snprintf(ps_buffer, ps_buffer_size, + PROGRAM_NAME_PREFIX "%s %s %s ", + username, dbname, host_info); + } + else + { + snprintf(ps_buffer, ps_buffer_size, + PROGRAM_NAME_PREFIX "%s %s %s %s ", + cluster_name, username, dbname, host_info); + } + ps_buffer_cur_len = ps_buffer_fixed_size = strlen(ps_buffer); set_ps_display(initial_str, true); diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index 1493d2c..d3cdf68 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -224,6 +224,7 @@ extern int temp_file_limit; extern int num_temp_buffers; +extern const char *cluster_name; extern char *data_directory; extern char *ConfigFileName; extern char *HbaFileName;