Pavel Stehule <pavel.stehule@gmail.com> writes:
> 2017-02-02 10:05 GMT+01:00 <martin.langwisch@gmx.net>:
>> I have a function f that returns a composite type.
>> The following query:
>> select f().*
>> takes about ten times as long as either
>> select f()
>> or
>> select (f).* from (select f() as f) a;
> SELECT (fx()).* is translated by parser to query SELECT fx().a, fx().b,
> fx().c ....
> When your function fx is slow, then you cannot to use a (fx()).* pattern
Yeah. Putting the function in FROM is the recommended fix. You can
simplify the pattern to
select f.* from f() as f
or if the function needs arguments from a table,
select f.* from tab, lateral f(x,y) as f
regards, tom lane
--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs