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/sql/postgres_fdw.sql | |
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/sql/postgres_fdw.sql')
-rw-r--r-- | contrib/postgres_fdw/sql/postgres_fdw.sql | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql index 30b5175da5b..20749868d31 100644 --- a/contrib/postgres_fdw/sql/postgres_fdw.sql +++ b/contrib/postgres_fdw/sql/postgres_fdw.sql @@ -3422,3 +3422,42 @@ CREATE FOREIGN TABLE inv_fsz (c1 int ) -- Invalid batch_size option CREATE FOREIGN TABLE inv_bsz (c1 int ) SERVER loopback OPTIONS (batch_size '100$%$#$#'); + +-- =================================================================== +-- test postgres_fdw.application_name GUC +-- =================================================================== +-- Turn debug_discard_caches off for this test to make that +-- the remote connection is alive when checking its application_name. +-- For each test, close all the existing cached connections manually and +-- establish connection with new setting of application_name. +SET debug_discard_caches = 0; + +-- If appname is set as GUC but not as options of server object, +-- the GUC setting is used as application_name of remote connection. +SET postgres_fdw.application_name TO 'fdw_guc_appname'; +SELECT 1 FROM postgres_fdw_disconnect_all(); +SELECT 1 FROM ft6 LIMIT 1; +SELECT application_name FROM pg_stat_activity + WHERE application_name IN ('loopback2', 'fdw_guc_appname'); + +-- If appname is set as options of server object but not as GUC, +-- appname of server object is used. +RESET postgres_fdw.application_name; +ALTER SERVER loopback2 OPTIONS (ADD application_name 'loopback2'); +SELECT 1 FROM postgres_fdw_disconnect_all(); +SELECT 1 FROM ft6 LIMIT 1; +SELECT application_name FROM pg_stat_activity + WHERE application_name IN ('loopback2', 'fdw_guc_appname'); + +-- If appname is set both as GUC and as options of server object, +-- the GUC setting overrides appname of server object and is used. +SET postgres_fdw.application_name TO 'fdw_guc_appname'; +SELECT 1 FROM postgres_fdw_disconnect_all(); +SELECT 1 FROM ft6 LIMIT 1; +SELECT application_name FROM pg_stat_activity + WHERE application_name IN ('loopback2', 'fdw_guc_appname'); + +--Clean up +ALTER SERVER loopback2 OPTIONS (DROP application_name); +RESET postgres_fdw.application_name; +RESET debug_discard_caches; |