Thanks,
my real function is quite expensive, so I don't want it to execute
twice. Toms subselect query is therefore exactly what I want, and since
it will be hidden in a view, it doesn't matter that it is a long expression.
Best regards,
Heiko
Tom Lane wrote:
> regression=# select x,y,(f).* from
> regression-# (select *, sum_n_product(x,y) as f from myvals offset 0) ss;
> x | y | sum | prod
> ---+---+-----+------
> 1 | 2 | 3 | 2
> (1 row)
>
> The "offset 0" is an optimization fence to keep the planner from
> flattening this form into the form where the function is called twice.
> (As of 8.2, you can dispense with that if the function is marked volatile.)
>