From 3aee659423137a547ed178a1dab34fe3caf30702 Mon Sep 17 00:00:00 2001 From: jesperpedersen Date: Thu, 31 Oct 2019 08:34:41 -0400 Subject: [PATCH] Add an -a / --appname command line switch to control the application_name property. Author: Jesper Pedersen --- doc/src/sgml/ref/pg_basebackup.sgml | 11 +++++++++++ doc/src/sgml/ref/pg_receivewal.sgml | 11 +++++++++++ doc/src/sgml/ref/pg_recvlogical.sgml | 11 +++++++++++ src/bin/pg_basebackup/pg_basebackup.c | 7 ++++++- src/bin/pg_basebackup/pg_receivewal.c | 7 ++++++- src/bin/pg_basebackup/pg_recvlogical.c | 7 ++++++- src/bin/pg_basebackup/streamutil.c | 7 +++++++ src/bin/pg_basebackup/streamutil.h | 1 + 8 files changed, 59 insertions(+), 3 deletions(-) diff --git a/doc/src/sgml/ref/pg_basebackup.sgml b/doc/src/sgml/ref/pg_basebackup.sgml index fc9e222f8d..28b5dee206 100644 --- a/doc/src/sgml/ref/pg_basebackup.sgml +++ b/doc/src/sgml/ref/pg_basebackup.sgml @@ -543,6 +543,17 @@ PostgreSQL documentation The following command-line options control the database connection parameters. + + + + + + Specifies the application name used to connect to the server. + See for more information. + + + + diff --git a/doc/src/sgml/ref/pg_receivewal.sgml b/doc/src/sgml/ref/pg_receivewal.sgml index 177e9211c0..0957e0a9f5 100644 --- a/doc/src/sgml/ref/pg_receivewal.sgml +++ b/doc/src/sgml/ref/pg_receivewal.sgml @@ -248,6 +248,17 @@ PostgreSQL documentation The following command-line options control the database connection parameters. + + + + + + Specifies the application name used to connect to the server. + See for more information. + + + + diff --git a/doc/src/sgml/ref/pg_recvlogical.sgml b/doc/src/sgml/ref/pg_recvlogical.sgml index 4c79f90414..b2d9b35362 100644 --- a/doc/src/sgml/ref/pg_recvlogical.sgml +++ b/doc/src/sgml/ref/pg_recvlogical.sgml @@ -272,6 +272,17 @@ PostgreSQL documentation The following command-line options control the database connection parameters. + + + + + + Specifies the application name used to connect to the server. + See for more information. + + + + diff --git a/src/bin/pg_basebackup/pg_basebackup.c b/src/bin/pg_basebackup/pg_basebackup.c index a9d162a7da..237945f879 100644 --- a/src/bin/pg_basebackup/pg_basebackup.c +++ b/src/bin/pg_basebackup/pg_basebackup.c @@ -351,6 +351,7 @@ usage(void) " do not verify checksums\n")); printf(_(" -?, --help show this help, then exit\n")); printf(_("\nConnection options:\n")); + printf(_(" -a, --appname=NAME application name\n")); printf(_(" -d, --dbname=CONNSTR connection string\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -p, --port=PORT database server port number\n")); @@ -2031,6 +2032,7 @@ main(int argc, char **argv) {"label", required_argument, NULL, 'l'}, {"no-clean", no_argument, NULL, 'n'}, {"no-sync", no_argument, NULL, 'N'}, + {"appname", required_argument, NULL, 'a'}, {"dbname", required_argument, NULL, 'd'}, {"host", required_argument, NULL, 'h'}, {"port", required_argument, NULL, 'p'}, @@ -2070,7 +2072,7 @@ main(int argc, char **argv) atexit(cleanup_directories_atexit); - while ((c = getopt_long(argc, argv, "CD:F:r:RS:T:X:l:nNzZ:d:c:h:p:U:s:wWkvP", + while ((c = getopt_long(argc, argv, "CD:F:r:RS:T:X:l:nNzZ:a:d:c:h:p:U:s:wWkvP", long_options, &option_index)) != -1) { switch (c) @@ -2176,6 +2178,9 @@ main(int argc, char **argv) exit(1); } break; + case 'a': + application_name = pg_strdup(optarg); + break; case 'd': connection_string = pg_strdup(optarg); break; diff --git a/src/bin/pg_basebackup/pg_receivewal.c b/src/bin/pg_basebackup/pg_receivewal.c index c0c8747982..863dcdb161 100644 --- a/src/bin/pg_basebackup/pg_receivewal.c +++ b/src/bin/pg_basebackup/pg_receivewal.c @@ -93,6 +93,7 @@ usage(void) printf(_(" -Z, --compress=0-9 compress logs with given compression level\n")); printf(_(" -?, --help show this help, then exit\n")); printf(_("\nConnection options:\n")); + printf(_(" -a, --appname=NAME application name\n")); printf(_(" -d, --dbname=CONNSTR connection string\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -p, --port=PORT database server port number\n")); @@ -470,6 +471,7 @@ main(int argc, char **argv) {"help", no_argument, NULL, '?'}, {"version", no_argument, NULL, 'V'}, {"directory", required_argument, NULL, 'D'}, + {"appname", required_argument, NULL, 'a'}, {"dbname", required_argument, NULL, 'd'}, {"endpos", required_argument, NULL, 'E'}, {"host", required_argument, NULL, 'h'}, @@ -516,7 +518,7 @@ main(int argc, char **argv) } } - while ((c = getopt_long(argc, argv, "D:d:E:h:p:U:s:S:nwWvZ:", + while ((c = getopt_long(argc, argv, "D:a:d:E:h:p:U:s:S:nwWvZ:", long_options, &option_index)) != -1) { switch (c) @@ -524,6 +526,9 @@ main(int argc, char **argv) case 'D': basedir = pg_strdup(optarg); break; + case 'a': + application_name = pg_strdup(optarg); + break; case 'd': connection_string = pg_strdup(optarg); break; diff --git a/src/bin/pg_basebackup/pg_recvlogical.c b/src/bin/pg_basebackup/pg_recvlogical.c index 12a3505226..badb2b7052 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.c +++ b/src/bin/pg_basebackup/pg_recvlogical.c @@ -97,6 +97,7 @@ usage(void) printf(_(" -V, --version output version information, then exit\n")); printf(_(" -?, --help show this help, then exit\n")); printf(_("\nConnection options:\n")); + printf(_(" -a, --appname=NAME application name\n")); printf(_(" -d, --dbname=DBNAME database to connect to\n")); printf(_(" -h, --host=HOSTNAME database server host or socket directory\n")); printf(_(" -p, --port=PORT database server port number\n")); @@ -654,6 +655,7 @@ main(int argc, char **argv) {"version", no_argument, NULL, 'V'}, {"help", no_argument, NULL, '?'}, /* connection options */ + {"appname", required_argument, NULL, 'a'}, {"dbname", required_argument, NULL, 'd'}, {"host", required_argument, NULL, 'h'}, {"port", required_argument, NULL, 'p'}, @@ -699,7 +701,7 @@ main(int argc, char **argv) } } - while ((c = getopt_long(argc, argv, "E:f:F:nvd:h:p:U:wWI:o:P:s:S:", + while ((c = getopt_long(argc, argv, "E:f:F:nva:d:h:p:U:wWI:o:P:s:S:", long_options, &option_index)) != -1) { switch (c) @@ -723,6 +725,9 @@ main(int argc, char **argv) verbose++; break; /* connection options */ + case 'a': + application_name = pg_strdup(optarg); + break; case 'd': dbname = pg_strdup(optarg); break; diff --git a/src/bin/pg_basebackup/streamutil.c b/src/bin/pg_basebackup/streamutil.c index 94d1a12b9b..1130212c5d 100644 --- a/src/bin/pg_basebackup/streamutil.c +++ b/src/bin/pg_basebackup/streamutil.c @@ -43,6 +43,7 @@ static bool RetrieveDataDirCreatePerm(PGconn *conn); #define MINIMUM_VERSION_FOR_GROUP_ACCESS 110000 const char *progname; +char *application_name = NULL; char *connection_string = NULL; char *dbhost = NULL; char *dbuser = NULL; @@ -130,6 +131,12 @@ GetConnection(void) values[i] = progname; i++; + if (application_name) + { + keywords[i] = "application_name"; + values[i] = application_name; + i++; + } if (dbhost) { keywords[i] = "host"; diff --git a/src/bin/pg_basebackup/streamutil.h b/src/bin/pg_basebackup/streamutil.h index a756eee262..a0166315bc 100644 --- a/src/bin/pg_basebackup/streamutil.h +++ b/src/bin/pg_basebackup/streamutil.h @@ -18,6 +18,7 @@ #include "datatype/timestamp.h" extern const char *progname; +extern char *application_name; extern char *connection_string; extern char *dbhost; extern char *dbuser; -- 2.21.0