我正在尝试为 Postgres 9.6 编写一个函数来访问一些用 C 编写的代码。
我的功能定义为:
CREATE OR REPLACE FUNCTION graph_cluster_graph (sql text, has_rcost boolean)
RETURNS SETOF RECORD AS
'$libdir/libpgrouting-2.4', 'dir_graph_cluster_desc'
LANGUAGE c STABLE STRICT;
当试图调用它时:
select * from graph_cluster_graph('select * from case3_cab_dist_table',true);
我得到错误
record
返回“ ”的函数需要定义列表
如果我写它会起作用
select graph_cluster_graph('select * from case3_cab_dist_table',true);
在这种情况下,它调用所请求的 C 函数,然后在它返回时退出。
我确实更改了 C 函数的名称,只是为了了解会发生什么(您可能会出现关于无法找到该函数的错误)。所以我知道它可以找到我的 C 例程。再次使用select
语句的第二种形式并获得响应意味着 C 函数已被正确调用。
有谁知道我做错了什么?