请让我知道,我如何才能在PL / pgSQL函数($whoexecuted
之内)中获取函数执行的客户机(仅单个客户机)的详细信息。我正在获取当前所有活动客户的详细信息。
按照以下代码。
begin
select ps.usename, ps.client_addr,ps.application_name from pg_stat_activity ps
where state = 'active'
and ps.usename in('user1') into pg_stat_activity_rowtype
;
答案 0 :(得分:0)
pg_stat_activity的内容也可以从PLpgSQL获得。因此您可以使用
do $$
declare r record;
begin
for r in select * from pg_stat_activity where pid = pg_backend_pid()
loop
raise notice '%', r;
end loop;
end;
$$;
可以从某些来源收集这些数据:
select current_user, session_user, current_database(), inet_client_addr(), current_setting('application_name');
┌──────────────┬──────────────┬──────────────────┬──────────────────┬─────────────────┐
│ current_user │ session_user │ current_database │ inet_client_addr │ current_setting │
╞══════════════╪══════════════╪══════════════════╪══════════════════╪═════════════════╡
│ pavel │ pavel │ postgres │ │ psql │
└──────────────┴──────────────┴──────────────────┴──────────────────┴─────────────────┘
(1 row)
更多文档: