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。