aboutsummaryrefslogtreecommitdiff
path: root/contrib/postgres_fdw/sql/postgres_fdw.sql
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2021-12-24 16:55:11 +0900
committerFujii Masao <fujii@postgresql.org>2021-12-24 16:55:11 +0900
commit6e0cb3dec10e460288d68a128e3d79d16a230cdb (patch)
tree5d106381fe2fa91fb9b0dbf3a81061c7d9356764 /contrib/postgres_fdw/sql/postgres_fdw.sql
parent94226d4506e66d6e7cbf4b391f1e7393c1962841 (diff)
downloadpostgresql-6e0cb3dec10e460288d68a128e3d79d16a230cdb.tar.gz
postgresql-6e0cb3dec10e460288d68a128e3d79d16a230cdb.zip
postgres_fdw: Allow postgres_fdw.application_name to include escape sequences.
application_name that used when postgres_fdw establishes a connection to a foreign server can be specified in either or both a connection parameter of a server object and GUC postgres_fdw.application_name. This commit allows those parameters to include escape sequences that begins with % character. Then postgres_fdw replaces those escape sequences with status information. For example, %d and %u are replaced with user name and database name in local server, respectively. This feature enables us to add information more easily to track remote transactions or queries, into application_name of a remote connection. Author: Hayato Kuroda Reviewed-by: Kyotaro Horiguchi, Masahiro Ikeda, Hou Zhijie, Fujii Masao Discussion: https://postgr.es/m/TYAPR01MB5866FAE71C66547C64616584F5EB9@TYAPR01MB5866.jpnprd01.prod.outlook.com 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.sql21
1 files changed, 21 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql
index beeac8af1ed..105b133bbd1 100644
--- a/contrib/postgres_fdw/sql/postgres_fdw.sql
+++ b/contrib/postgres_fdw/sql/postgres_fdw.sql
@@ -3452,3 +3452,24 @@ CREATE FOREIGN TABLE inv_bsz (c1 int )
-- No option is allowed to be specified at foreign data wrapper level
ALTER FOREIGN DATA WRAPPER postgres_fdw OPTIONS (nonexistent 'fdw');
+
+-- ===================================================================
+-- test postgres_fdw.application_name GUC
+-- ===================================================================
+-- Close all the existing cached connections so that new connection
+-- will be established with new setting of postgres_fdw.application_name.
+SELECT 1 FROM postgres_fdw_disconnect_all();
+
+-- Add some escape sequences into postgres_fdw.application_name
+-- so as to test that they are replaced with status information expectedly.
+SET postgres_fdw.application_name TO '%a%u%d%p%%';
+
+BEGIN;
+SELECT 1 FROM ft6 LIMIT 1;
+SELECT count(*) FROM pg_stat_activity
+ WHERE application_name = current_setting('application_name') ||
+ CURRENT_USER || current_database() || pg_backend_pid() || '%';
+COMMIT;
+
+--Clean up
+RESET postgres_fdw.application_name;