Запрос к внешней таблице невозможен из-за индексации значения пользовательской хранимой функции в базе данных хоста

У меня следующая ситуация.

В базе данных A на сервере I, назовем его Host DB, есть таблица, в которой есть следующий пример сценария создания:

CREATE TABLE public.some_table (
    id           SERIAL PRIMARY KEY,
    some_field   TEXT
);

CREATE INDEX public.some_field_index
ON public.some_table USING btree
(my_custom_function(some_field));

Как видите, индекс создается на основе некоторой пользовательской функции, хранимой в базе данных A, функции my_custom_function.

Теперь я хочу объявить some_table как чужую таблицу на другом сервере, в базе данных B. После создания сервера, пользовательских сопоставлений и т. Д. Я объявляю стороннюю таблицу как:

CREATE FOREIGN TABLE public.some_table (
    id           SERIAL PRIMARY KEY,
    some_field   TEXT
)
SERVER host_server
OPTIONS (
    schema_name 'public',
    table_name  'some_table'
);

Таблица создана красиво, однако я не могу запросить ее. Вместо этого я получаю следующую ошибку:

ERROR: function my_custom_function(text) does not exist.
No function matches the given name and argument type.
You might need to add explcit type casts.

CONTEXT: Remote SQL command: SELECT id, some_field FROM public.some_table
SQL fuction my_custom_function during inlining.

Я считаю, что проблема связана с тем, что функция my_custom_function не объявлена ​​на сервере B в базе данных "guest". По некоторым причинам я не хочу создавать эту функцию. Есть ли решение для преодоления этой проблемы?

Спасибо за все ваши ответы заранее.

0 ответов

Другие вопросы по тегам