connect_point() 接続先を確認する
個人的には、接続ユーザだれからも利用できるようにpublicスキーマへ作成して使っています。createの際は適宜スキーマ修飾してください。security definerとしないのは、作成者以外のユーザから利用した際、current_user()の結果が作成者になり、意図しない事になるのでinvokerを指定しています。(デフォルトがinvokerなので記載の必要はないのですが、ここではあえて記載してみました)
create or replace function public.connect_point () returns table ( item_name text, item_value text ) language 'plpgsql' -- security definer -- definerにすると作成者以外のユーザから利用した際意図しない事になるのでinvokerを指定する security invoker as $body$ begin return query select w.item_name,w.item_value from ( select 1 as item_no,'current_database' as item_name,cast(current_database() as text) as item_value union select 2 as item_no,'version' as item_name,substring(version() from 'PostgreSQL [0-9|.]*') as item_value union select 3 as item_no,'inet_server_addr' as item_name,cast(inet_server_addr() as text) as item_value union select 4 as item_no,'inet_server_port' as item_name,cast(inet_server_port() as text) as item_value union select 5 as item_no,'current_user' as item_name,cast(current_user as text) as item_value union select 6 as item_no,'current_schema' as item_name,cast(current_schema() as text) as item_value union select 7 as item_no,'inet_client_addr' as item_name,cast(inet_client_addr() as text) as item_value ) as w order by w.item_no ; end; $body$;
実行例
myposdb=# select * from public.connect_point();
item_name | item_value
------------------+-----------------
current_database | myposdb
version | PostgreSQL 13.9
inet_server_addr | 192.168.3.22/32
inet_server_port | 5432
current_user | sooni
current_schema | sooni
inet_client_addr | 192.168.3.5/32
(7 行)
myposdb=#
標準で提供されている機能だけではサーバのIPしか取得できず(本当はホスト名が欲しい)不満なので以下のようなファンクションを手作りしました。