On Fri, Feb 25, 2011 at 11:31 AM, Greg Stark <gsst...@mit.edu> wrote: > On Fri, Feb 25, 2011 at 2:58 PM, Tom Lane <t...@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.i select * from a natural join b; or the above if x is.i is 1 for all x on query start? merlin -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers