我有以下情况。
在服务器 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 有关。由于某些原因,我不想创建此功能。有什么办法可以克服这个问题吗?
提前感谢您的所有回答。