0

我有以下情况。

在服务器 I 上的数据库 A 中,我们称之为 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 中。

现在我想在数据库 B 中的其他服务器上将 some_table 声明为外部表。在创建服务器、用户映射等之后,我将外部表声明为:

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.

我相信这个问题与“客户”数据库中未在服务器 B 上声明的函数 my_custom_function 有关。由于某些原因,我不想创建此功能。有什么办法可以克服这个问题吗?

提前感谢您的所有回答。

4

0 回答 0