Re: wCTE: why not finish sub-updates at the end, not the beginning?
От | Merlin Moncure |
---|---|
Тема | Re: wCTE: why not finish sub-updates at the end, not the beginning? |
Дата | |
Msg-id | AANLkTim4R685tcmdmn-mBrdC-0BXYDqOqSoGrfvd4Um9@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: wCTE: why not finish sub-updates at the end, not the beginning? (Greg Stark <gsstark@mit.edu>) |
Список | pgsql-hackers |
On Fri, Feb 25, 2011 at 11:31 AM, Greg Stark <gsstark@mit.edu> wrote: > On Fri, Feb 25, 2011 at 2:58 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote: >> However, the real reason for doing it isn't any of those, but rather >> to establish the principle that the executions of the modifying >> sub-queries are interleaved not sequential. We're never going to be >> able to do any significant optimization of such queries if we have to >> preserve the behavior that the sub-queries execute sequentially. >> And I think it's inevitable that users will manage to build such an >> assumption into their queries if the first release with the feature >> behaves that way. > > Does the interleaved execution have sane semantics? > > With a query like: > > WITH > a as update x set x.i=x.i+1 returning x.i, > b as update x set x.i=x.i+1 returning x.i > select * from a natural join b; > > Is there any way to tell what it will return or what state it will > leave the table in? WITH a as update x set x.i=x.i+1 returning x.i, b as update x set x.i=x.i+1 where x.i = 1 returning x.iselect * from a naturaljoin b; or the above if x is.i is 1 for all x on query start? merlin
В списке pgsql-hackers по дате отправления: