Где выполняются запросы Postgres DBLink?
Все,
Я выполняю запрос на целевом сервере, который извлекает данные с исходного сервера. Мой запрос использует функцию дайджеста. Дайджест есть на обоих серверах. Он встроен в UDF, который также присутствует на обоих серверах. Кстати, часть запроса "select" отлично работает на исходном сервере.
Я думаю, что когда вы отправляете удаленный запрос, он будет выполняться на удаленном поле. Я получаю сообщение об ошибке "1 функция дайджест (текст, неизвестный) не существует...". Кроме того, поскольку все функции находятся в публичной схеме на обоих серверах, я не вижу, как Postgres дает сбой, - это найти функцию.
Любая помощь приветствуется.
ТИА,
Майк
1 ответ
Запросы выполняются на сервере, указанном в строке подключения. Если хост не указан, то на localhost. Они выполняются с использованием роли из строки подключения. Это также включает в себя search_path
этой роли.
Не имеет отношения к вашему вопросу, но я бы попробовал две вещи при отладке той проблемы, которую вы описали:
- Подключиться к удаленному серверу, используя ту же роль, что и строка подключения dblink, и выполнить запрос
- схема уточняет эту функцию в dblink:
public.digest(..)