Re: extra function calls from query returning composite type
| От | Tom Lane |
|---|---|
| Тема | Re: extra function calls from query returning composite type |
| Дата | |
| Msg-id | 6792.1419868489@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | extra function calls from query returning composite type (Ronald Peterson <ron@hub.yellowbank.com>) |
| Ответы |
Re: extra function calls from query returning composite type
|
| Список | pgsql-general |
Ronald Peterson <ron@hub.yellowbank.com> writes:
> I added a 'raise notice' to a plpgsql function I was working on
> recently, and noticed that my notification was being raised more often
> than I expected. The notification is raised in a function ('getone'
> in my example below) that returns a single composite value. This
> function is then called by another function ('getset') that returns a
> setof that composite value. It appears that 'getone' is called once
> for each column of my composite type. I whittled this down to the
> following example.
> I get the expected result from my query, but I don't understand (what
> appear to be) the extra function calls.
This:
> SELECT (getone(id)).*
is implemented as SELECT (getone(id)).foo, (getone(id)).bar
If you're using 9.3 or later you could avoid that by recasting the
call as LATERAL, ie
SELECT go.*
FROM dat, LATERAL getone(id) AS go
WHERE set = setid;
regards, tom lane
В списке pgsql-general по дате отправления: