Postgresql 如何在PL/pgSQL函数中获取执行的客户端详细信息
请告诉我,如何在PL/pgSQL函数(somethingPostgresql 如何在PL/pgSQL函数中获取执行的客户端详细信息,postgresql,plpgsql,Postgresql,Plpgsql,请告诉我,如何在PL/pgSQL函数(something$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
$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
;
pg_stat_活动的内容也可从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)
更多信息请参阅文档: