Re: SELECT from record-returning function causes function code to be executed multiple times

Поиск
Список
Период
Сортировка
От David Johnston
Тема Re: SELECT from record-returning function causes function code to be executed multiple times
Дата
Msg-id 1387145351920-5783497.post@n5.nabble.com
обсуждение исходный текст
Ответ на SELECT from record-returning function causes function code to be executed multiple times  (dbaston <dbaston@gmail.com>)
Список pgsql-general
dbaston wrote
> I'm wondering if this is expected behavior?

Yes.

The proper way to handle this is by putting the SRF in the FROM clause.

If you must have it in the select clause you should do this:

WITH srf_call (
SELECT srf_function() AS srf_result
)
SELECT (srf_call.srf_result).* FROM srf_call;

Note that if you are using 9.3 you likely can make use of the new LATERAL
construct to leave the SRF call in the FROM clause while still pulling
parameter values from the same level in the query (which is the main reason
for moving the SRF to the select-list).

David J.




--
View this message in context:
http://postgresql.1045698.n5.nabble.com/SELECT-from-record-returning-function-causes-function-code-to-be-executed-multiple-times-tp5783495p5783497.html
Sent from the PostgreSQL - general mailing list archive at Nabble.com.


В списке pgsql-general по дате отправления:

Предыдущее
От: dbaston
Дата:
Сообщение: SELECT from record-returning function causes function code to be executed multiple times
Следующее
От: Juan Pablo L
Дата:
Сообщение: replacing expresion in plpgsql