Как записать результаты dblink_exec? - PullRequest
0 голосов
/ 19 октября 2011

В PostgreSQL я использую dblink_exec.Могу ли я войти в систему каждый раз, когда выполняется dblink?

1 Ответ

1 голос
/ 20 октября 2011

Я не знаю простого способа, такого как настройка конфигурации, чтобы регистрировать только некоторые функции в 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 или переустановкоймодуль contrib dblink, если вы фактически переместите исходные функции в произвольное имя / схему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...