On Tue, 24 Jul 2007, Gregory Stark wrote:
> "Csaba Nagy" <nagy@ecircle-ag.com> writes:
>
> >> Unfortunately the stuff that makes a ctid=<value> nice doesn't seem to be
> >> used when you're doing an in. It's possible that a function that does
> >> something like
> >> for rec in select ctid from my_table limit 10 loop
> >> delete from my_table where ctid=rec.ctid;
> >> end loop
> >> might do okay, but I haven't tried it.
> >
> > OK, I think this will work. It would be nice though to have the 'ctid
> > in' trick work just as well as 'ctid = ' ...
>
> Unfortunately I don't think this will work. Multiple backends will happily
> pick up the same ctid in their selects and then try to delete the same
> records.
I'm pretty sure he said that the batch processing (and the delete) would
only be happening from one backend at a time, no concurrency on that
portion, merely concurrency with the large volume of inserts.