Re: BUG #5754: CTE optimization fails to account for side effects

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: BUG #5754: CTE optimization fails to account for side effects
Дата
Msg-id 10323.1289865347@sss.pgh.pa.us
обсуждение исходный текст
Ответ на BUG #5754: CTE optimization fails to account for side effects  ("David Fetter" <david@fetter.org>)
Ответы Re: BUG #5754: CTE optimization fails to account for side effects  (David Fetter <david@fetter.org>)
Список pgsql-bugs
"David Fetter" <david@fetter.org> writes:
> CREATE SEQUENCE my_seq;
> WITH t AS (SELECT nextval('my_seq')) VALUES(1);
> SELECT currval('my_seq');

> ERROR:  currval of sequence "my_seq" is not yet defined in this session

> What's happened is that the optimization didn't account for the idea that a
> SELECT might have a side effect, and if we're going with the "CTEs execute
> exactly once and (equivalent to) fully," this is a bug.

The reason it's not a bug is that we have not adopted that position.
There is a proposal to make it so for wCTEs, but that doesn't mean
we should change the existing, documented and useful behavior of regular
CTEs.

(If you're wondering where it's documented, I cite section 7.8's
statement that only as much of a CTE query is evaluated as is read by
the parent query.  The limiting case of that is no reference -> no rows
read.)

            regards, tom lane

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

Предыдущее
От: "David Fetter"
Дата:
Сообщение: BUG #5754: CTE optimization fails to account for side effects
Следующее
От: David Fetter
Дата:
Сообщение: Re: BUG #5754: CTE optimization fails to account for side effects