甚至不需要CTE。一个 也可以完成这项工作(已在9.3版中进行了测试):
SELECT i, (f).* -- decompose here
FROM (
SELECT i, (slow_func(i)) AS f -- do not decompose here
FROM generate_series(1, 3) i
) sub;
确保不要在子查询中分解函数的复合结果。将其保留给 。 当然需要一个众所周知的类型。无法使用匿名记录。
或者说,什么@Richard写道,一个 作品了。语法可以更简单:
SELECT * FROM generate_series(1, 3) i, slow_func(i) f