0

在 PostgreSQL 中,我使用dblink_exec. 有什么方法可以记录每次dblink执行吗?

4

1 回答 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 回答