Где выполняются запросы Postgres DBLink?

Все,

Я выполняю запрос на целевом сервере, который извлекает данные с исходного сервера. Мой запрос использует функцию дайджеста. Дайджест есть на обоих серверах. Он встроен в UDF, который также присутствует на обоих серверах. Кстати, часть запроса "select" отлично работает на исходном сервере.

Я думаю, что когда вы отправляете удаленный запрос, он будет выполняться на удаленном поле. Я получаю сообщение об ошибке "1 функция дайджест (текст, неизвестный) не существует...". Кроме того, поскольку все функции находятся в публичной схеме на обоих серверах, я не вижу, как Postgres дает сбой, - это найти функцию.

Любая помощь приветствуется.

ТИА,

Майк

1 ответ

Решение

Запросы выполняются на сервере, указанном в строке подключения. Если хост не указан, то на localhost. Они выполняются с использованием роли из строки подключения. Это также включает в себя search_path этой роли.

Не имеет отношения к вашему вопросу, но я бы попробовал две вещи при отладке той проблемы, которую вы описали:

  1. Подключиться к удаленному серверу, используя ту же роль, что и строка подключения dblink, и выполнить запрос
  2. схема уточняет эту функцию в dblink: public.digest(..)
Другие вопросы по тегам