1
我写了一个函数,它带有两个参数并返回一个SETOF结果。返回另一个SETOF函数结果的SETOF返回函数的性能?
CREATE函数foo(parentId的BIGINT,childID的BIGINT) RETURNS SETOF酒吧AS ...
我想写两个 “包装” 这个功能更简单地称之为:
CREATE FUNCTION foo_parent(parentId bigint)
RETURNS SETOF bar AS
...
BEGIN
RETURN QUERY SELECT * FROM foo(parentId, NULL);
END;
CREATE FUNCTION foo_child(childId bigint)
RETURNS SETOF bar AS
...
BEGIN
... look up parent ID ...
RETURN QUERY SELECT * FROM foo(parentId, childId);
END;
是Postgres的足够聪明,直接返回的FOO()
结果时FOO_CHILD()
被调用时,还是会全部结果从FOO()
而FOO_CHILD()
执行复制,然后返回这些结果?
我想我是问,如果pgplsql会做tail-call优化!
编辑:我使用Postgres 8.2。