Re: Bug? Function with side effects not evaluated in CTE

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: Bug? Function with side effects not evaluated in CTE
Дата
Msg-id 4222.1382385498@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Bug? Function with side effects not evaluated in CTE  (David Johnston <polobo@yahoo.com>)
Ответы Re: Bug? Function with side effects not evaluated in CTE  (David Johnston <polobo@yahoo.com>)
Список pgsql-general
David Johnston <polobo@yahoo.com> writes:
> The two comparable queries are:

> A) WITH vf ( SELECT volatile_function(x) FROM generate_series(1,10) )
> SELECT * FROM vf LIMIT 1

> B) SELECT volatile_function(x) FROM generate_series(1,10) gs (x) LIMIT 1

> In (A) the relation "vf" - which is a 10-row table with the result of
> volatile_function as the only column - is limited to a single record and
> that whole row is output as-is (because of the "*")

> In (B) the relation "gs" - which is 10 rows having the result of
> generate_series as the only column - is limited to a single row and then the
> select-list project occurs against that single row (the volatile_function)

Just for the record, your interpretation of (B) is wrong.  LIMIT acts
after select-list evaluation --- try a set-returning function in the
select list to see that this is true.

            regards, tom lane


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

Предыдущее
От: David Johnston
Дата:
Сообщение: Re: Bug? Function with side effects not evaluated in CTE
Следующее
От: Merlin Moncure
Дата:
Сообщение: Re: Bug? Function with side effects not evaluated in CTE