Re: wCTE behaviour
От | Yeb Havinga |
---|---|
Тема | Re: wCTE behaviour |
Дата | |
Msg-id | 4CDE9F6E.90702@gmail.com обсуждение исходный текст |
Ответ на | Re: wCTE behaviour (David Fetter <david@fetter.org>) |
Ответы |
Re: wCTE behaviour
|
Список | pgsql-hackers |
On 2010-11-13 14:41, David Fetter wrote: > On Sat, Nov 13, 2010 at 02:28:35PM +0100, Yeb Havinga wrote: >> 1) the name "Common Table Expression" suggests that t must be >> regarded as an expression, hence syntactically / proof theoretic and >> not as a table, set of rows / model theoretic. I.e. it is not a >> "Common Table". > Disagree. A table never referred to in a query still exists. > Similarly, if a normal CTE called a data-changing function but was > nevertheless not referred to, it would still run. with t as (select nextval('seq')) select 1; does not update the sequence. >> 2) The expressions can be referenced zero, one or more times. To me >> it therefore makes the most sense that a DML expressions that is >> defined but not references has no effect. Referenced once: run the >> plan once. Referenced again: run the plan again. > No. When I designed this feature, it was precisely to take advantage > of the "run exactly once" behavior of CTEs. Under no circumstances > should we break this. I found the pgday2009 presentation http://wiki.postgresql.org/images/c/c0/PGDay2009-EN-Writeable_CTEs_The_Next_Big_Thing.pdf - the IO minimization example is cool, and I now understand that it would be artificial if the CTE had to be referenced, for it to be executed. Makes sense. regards, Yeb Havinga
В списке pgsql-hackers по дате отправления: