Richard Huxton <[EMAIL PROTECTED]> writes: > Have you looked at marking f1() etc cachable? This means Postgresql > will only call the function once for each parameter-set.
Unfortunately that's not true at all, or at least not helpful for this problem. The cachable attribute was poorly named, because it leads people to think that PG *will* cache function results, as opposed to *could* cache function results. A possible workaround is along the lines of SELECT f1, f1 + f2, f1 + f2 + f3 FROM (SELECT f1() as f1, f2() as f2, f3() as f3 LIMIT 1) tmp; Note the LIMIT 1 ... without that, the planner may flatten the two levels of SELECT together, eliminating the savings you're trying for. (I don't recall offhand all the conditions that govern flattening of a sub-select, but I'm pretty sure a sub-LIMIT will prevent it.) regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly