postgres_fdw: Make postgres_fdw.application_name support more escape sequences.
Commit 6e0cb3dec1 allowed postgres_fdw.application_name to include escape sequences %a (application name), %d (database name), %u (user name) and %p (pid). In addition to them, this commit makes it support the escape sequences for session ID (%c) and cluster name (%C). These are helpful to investigate where each remote transactions came from. Author: Fujii Masao Reviewed-by: Ryohei Takahashi, Kyotaro Horiguchi Discussion: https://postgr.es/m/1041dc9a-c976-049f-9f14-e7d94c29c4b2@oss.nttdata.com
This commit is contained in:
parent
c476f380e2
commit
94c49d5340
@ -10910,6 +10910,26 @@ SELECT pg_terminate_backend(pid, 180000) FROM pg_stat_activity
|
||||
t
|
||||
(1 row)
|
||||
|
||||
-- Test %c (session ID) and %C (cluster name) escape sequences.
|
||||
SET postgres_fdw.application_name TO 'fdw_%C%c';
|
||||
SELECT 1 FROM ft6 LIMIT 1;
|
||||
?column?
|
||||
----------
|
||||
1
|
||||
(1 row)
|
||||
|
||||
SELECT pg_terminate_backend(pid, 180000) FROM pg_stat_activity
|
||||
WHERE application_name =
|
||||
substring('fdw_' || current_setting('cluster_name') ||
|
||||
to_hex(trunc(EXTRACT(EPOCH FROM (SELECT backend_start FROM
|
||||
pg_stat_get_activity(pg_backend_pid()))))::integer) || '.' ||
|
||||
to_hex(pg_backend_pid())
|
||||
for current_setting('max_identifier_length')::int);
|
||||
pg_terminate_backend
|
||||
----------------------
|
||||
t
|
||||
(1 row)
|
||||
|
||||
--Clean up
|
||||
RESET postgres_fdw.application_name;
|
||||
RESET debug_discard_caches;
|
||||
|
@ -489,6 +489,12 @@ process_pgfdw_appname(const char *appname)
|
||||
case 'a':
|
||||
appendStringInfoString(&buf, application_name);
|
||||
break;
|
||||
case 'c':
|
||||
appendStringInfo(&buf, "%lx.%x", (long) (MyStartTime), MyProcPid);
|
||||
break;
|
||||
case 'C':
|
||||
appendStringInfoString(&buf, cluster_name);
|
||||
break;
|
||||
case 'd':
|
||||
appendStringInfoString(&buf, MyProcPort->database_name);
|
||||
break;
|
||||
|
@ -3501,6 +3501,17 @@ SELECT pg_terminate_backend(pid, 180000) FROM pg_stat_activity
|
||||
substring('fdw_' || current_setting('application_name') ||
|
||||
CURRENT_USER || '%' for current_setting('max_identifier_length')::int);
|
||||
|
||||
-- Test %c (session ID) and %C (cluster name) escape sequences.
|
||||
SET postgres_fdw.application_name TO 'fdw_%C%c';
|
||||
SELECT 1 FROM ft6 LIMIT 1;
|
||||
SELECT pg_terminate_backend(pid, 180000) FROM pg_stat_activity
|
||||
WHERE application_name =
|
||||
substring('fdw_' || current_setting('cluster_name') ||
|
||||
to_hex(trunc(EXTRACT(EPOCH FROM (SELECT backend_start FROM
|
||||
pg_stat_get_activity(pg_backend_pid()))))::integer) || '.' ||
|
||||
to_hex(pg_backend_pid())
|
||||
for current_setting('max_identifier_length')::int);
|
||||
|
||||
--Clean up
|
||||
RESET postgres_fdw.application_name;
|
||||
RESET debug_discard_caches;
|
||||
|
@ -984,6 +984,20 @@ postgres=# SELECT postgres_fdw_disconnect_all();
|
||||
<entry><literal>%a</literal></entry>
|
||||
<entry>Application name on local server</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%c</literal></entry>
|
||||
<entry>
|
||||
Session ID on local server
|
||||
(see <xref linkend="guc-log-line-prefix"/> for details)
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%C</literal></entry>
|
||||
<entry>
|
||||
Cluster name in local server
|
||||
(see <xref linkend="guc-cluster-name"/> for details)
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%u</literal></entry>
|
||||
<entry>User name on local server</entry>
|
||||
|
@ -271,7 +271,7 @@ extern int temp_file_limit;
|
||||
|
||||
extern int num_temp_buffers;
|
||||
|
||||
extern char *cluster_name;
|
||||
extern PGDLLIMPORT char *cluster_name;
|
||||
extern PGDLLIMPORT char *ConfigFileName;
|
||||
extern char *HbaFileName;
|
||||
extern char *IdentFileName;
|
||||
|
Loading…
x
Reference in New Issue
Block a user