在 PostgreSQL 中,我使用dblink_exec
. 有什么方法可以记录每次dblink
执行吗?
问问题
762 次
1 回答
1
我不知道有一种简单的方法,比如在 PostgreSQL 中只记录一些函数的配置设置。(如果有人这样做,我很感兴趣!)
您可以破解函数的源代码以在每次调用时发出通知并重新编译。
或者,如果您的 C 知识像我一样生疏,您可以以非常小的性能成本将该函数包装在一个 plpgsql 函数中,该函数会在调用 dblink_exec 之前或之后引发通知/警告。像这样:
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 回答