mirror of
https://github.com/postgres/postgres.git
synced 2025-06-11 20:28:21 +03:00
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
This commit is contained in:
@ -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;
|
||||
|
Reference in New Issue
Block a user