0

PostgreSQL ではdblink_exec. 実行されるたびにログを記録する方法はありますdblinkか?

4

1 に答える 1

1

PostgreSQL の一部の関数だけをログに記録する構成設定のような簡単な方法を知りません。(もし誰かがそうなら、私は興味があります!)

関数のソースをハッキングして、すべての呼び出しで通知を出して再コンパイルすることができます。

または、C の知識が私のようにさびている場合は、パフォーマンスへのわずかなコストで、dblink_exec を呼び出す前または後に通知/警告を発生させる plpgsql 関数で関数をラップできます。このような:

CREATE OR REPLACE FUNCTION mydblink_exec(text)
  RETURNS text AS
$$
RAISE NOTICE 'My text. Called with: "%"', $1;

RETURN dblink_exec($1);
$$
  LANGUAGE plpgsql VOLATILE STRICT;

元のdblink_exec()関数を別の名前またはスキーマに移動して、それをドロップイン置換にすることができます。必要な場合にのみ実行してください。下記参照。

必要な dblink_exec() のすべての形式をカバーするように注意してください。マニュアルを引用します

dblink_exec(text connname, text sql [, bool fail_on_error]) returns text
dblink_exec(text connstr, text sql [, bool fail_on_error]) returns text
dblink_exec(text sql [, bool fail_on_error]) returns text

そのために関数のオーバーロードを利用します。
実際に元の関数をカスタム名/スキーマに移動する場合は、PostgreSQL の新しいバージョンへのアップグレードまたは dblink contrib モジュールの再インストールに注意してください。

于 2011-10-19T20:19:12.807 に答える