On Sun, Nov 14, 2010 at 11:02:08PM +0100, Yeb Havinga wrote: > On 2010-11-14 21:06, Marko Tiikkaja wrote: > >On 2010-11-14 8:51 PM +0200, Yeb Havinga wrote: > >>On 2010-11-14 19:35, Robert Haas wrote: > >>>On Sun, Nov 14, 2010 at 1:01 PM, Marko Tiikkaja > >>><marko.tiikk...@cs.helsinki.fi> wrote: > >>>>In my opinion, all of these should have the same effect: > >>>>DELETE all rows > >>>>from "foo". Any other option means we're going to have > >>>>trouble predicting > >>>>how a query is going to behave. > >>>I think it's clear that's the only sensible behavior. > >>What if CTE's ever get input parameters? > > > >What about input parameters? > With input parameters there is a clear link between a CTE and a > caller. If a CTE is called more than once, it must be executed more > than once, e.g. (notation t:x means cte has parameter x) > > WITH t:x AS (INSERT INTO foo VALUES(x) RETURNING *) > SELECT (SELECT * FROM t(1)), (SELECT * FROM t(2)); > runs the cte two times, hence two new rows in foo.
I think we can worry about that if we ever have run-time functions done as WITH, but I think they'd be a *much* better fit for DO. Cheers, David. -- David Fetter <da...@fetter.org> http://fetter.org/ Phone: +1 415 235 3778 AIM: dfetter666 Yahoo!: dfetter Skype: davidfetter XMPP: david.fet...@gmail.com iCal: webcal://www.tripit.com/feed/ical/people/david74/tripit.ics Remember to vote! Consider donating to Postgres: http://www.postgresql.org/about/donate -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers