diff options
author | Fujii Masao <fujii@postgresql.org> | 2021-09-07 12:27:30 +0900 |
---|---|---|
committer | Fujii Masao <fujii@postgresql.org> | 2021-09-07 12:27:30 +0900 |
commit | 449ab6350526e99d33363706b759951ebad7928e (patch) | |
tree | 3ca7c9bca2a856ed389d1a182667581ee6875e4d /contrib/postgres_fdw/option.c | |
parent | 4c3478859b7359912d7e99fea702c56b1f53000c (diff) | |
download | postgresql-449ab6350526e99d33363706b759951ebad7928e.tar.gz postgresql-449ab6350526e99d33363706b759951ebad7928e.zip |
postgres_fdw: Allow application_name of remote connection to be set via GUC.
This commit adds postgres_fdw.application_name GUC which specifies
a value for application_name configuration parameter used
when postgres_fdw establishes a connection to a foreign server.
This GUC setting always overrides application_name option of
the foreign server object. This GUC is useful when we want to
specify our own application_name per remote connection.
Previously application_name of a remote connection could be set
basically only via options of a server object. But which meant that
every session connecting to the same foreign server basically
should use the same application_name. Also if we want to change
the setting, we had to execute "ALTER SERVER ... OPTIONS ..." command.
It was inconvenient.
Author: Hayato Kuroda
Reviewed-by: Masahiro Ikeda, Fujii Masao
Discussion: https://postgr.es/m/TYCPR01MB5870D1E8B949DAF6D3B84E02F5F29@TYCPR01MB5870.jpnprd01.prod.outlook.com
Diffstat (limited to 'contrib/postgres_fdw/option.c')
-rw-r--r-- | contrib/postgres_fdw/option.c | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/contrib/postgres_fdw/option.c b/contrib/postgres_fdw/option.c index c574ca2cf39..5bb1af4084a 100644 --- a/contrib/postgres_fdw/option.c +++ b/contrib/postgres_fdw/option.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * option.c - * FDW option handling for postgres_fdw + * FDW and GUC option handling for postgres_fdw * * Portions Copyright (c) 2012-2021, PostgreSQL Global Development Group * @@ -46,6 +46,13 @@ static PgFdwOption *postgres_fdw_options; static PQconninfoOption *libpq_options; /* + * GUC parameters + */ +char *pgfdw_application_name = NULL; + +void _PG_init(void); + +/* * Helper functions */ static void InitPgFdwOptions(void); @@ -435,3 +442,29 @@ ExtractExtensionList(const char *extensionsString, bool warnOnMissing) list_free(extlist); return extensionOids; } + +/* + * Module load callback + */ +void +_PG_init(void) +{ + /* + * Unlike application_name GUC, don't set GUC_IS_NAME flag nor check_hook + * to allow postgres_fdw.application_name to be any string more than + * NAMEDATALEN characters and to include non-ASCII characters. Instead, + * remote server truncates application_name of remote connection to less + * than NAMEDATALEN and replaces any non-ASCII characters in it with a '?' + * character. + */ + DefineCustomStringVariable("postgres_fdw.application_name", + "Sets the application name to be used on the remote server.", + NULL, + &pgfdw_application_name, + NULL, + PGC_USERSET, + 0, + NULL, + NULL, + NULL); +} |