Re: UPDATE/DELETE XXX WHERE CURRENT OF cursor_name

From: "Florian G(dot) Pflug" <fgp(at)phlo(dot)org>
To: Gavin Sherry <swm(at)linuxworld(dot)com(dot)au>
Cc: Golden Liu <goldenliu(at)gmail(dot)com>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: UPDATE/DELETE XXX WHERE CURRENT OF cursor_name
Date: 2006-07-24 15:12:18
Message-ID: 44C4E352.6090704@phlo.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Gavin Sherry wrote:
> On Mon, 24 Jul 2006, Golden Liu wrote:
>
>> begin;
>> declare foo cursor for select * from bar for update;
>> fetch foo;
>> update bar set abc='def' where current of foo;
>> fetch foo;
>> delete from bar where current of foo;
>> commit;

> No one has stepped up to do this for 8.2 so unfortunately you will most
> likely not see this within the next year or so :-(.

Couldn't this be emulated by doing
begin;
declare foo cursor for select * from bar for update;
fetch foo into v_foo ;
update bar set abc='def' where ctid = v_foo.ctid;
fetch foo into v_foo ;
delete from bar where ctid = v_foo.ctid;
commit;

Or could a concurrent vacuum run lead to the wrong
rows being updated/deleted?

greetings, Florian Pflug

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2006-07-24 15:13:55 Better name/syntax for "online" index creation
Previous Message Sergey E. Koposov 2006-07-24 15:10:03 Re: patch implementing the multi-argument aggregates (SOC