On Sat, Feb 26, 2011 at 12:30 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> Yay! I'm excited about this, particularly the possible "pipelining"
>> stuff, where you can do WITH (DELETE .. RETURNING ..) INSERT ... and
>> have it be like cool and fast and stuff.
>
>> Or at least I hope you can do that.
>
> It's gonna need some work yet. As things stand, the tuples are indeed
> pipelined through, but the CteScan nodes *also* stash them aside into
> tuplestores, just in case somebody demands a rescan. Fixing that will
> require revisiting the exec flags (EXEC_FLAG_REWIND etc). We don't
> currently distinguish "it's unlikely you'll have to rescan" from
> "you're guaranteed not to have to rescan", but a CteScan that's covering
> a ModifyTable has to know the latter to not have to keep hold of copies
> of the RETURNING tuples.
>
> It might be a small enough change to do after alpha starts, but I don't
> have time for it right now.
Well, if nothing else, the potential is there for a future release.
I'm probably not quite as excited about this feature as David Fetter
(and my 100-Watt lightbulb is not quite as bright as the sun at high
noon in midsummer) but I do think it's pretty cool, and I appreciate
you getting it in, even in a somewhat basic form.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company