Attached is a patch implementing updatable cursors in HEAD. Regression
test and documentation are included.
Updateable cursors are used as follows:
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;
Two points:
i) The patch doesn't implement updateable cursors for cursors marked WITH
HOLD. I have working code for this and will send it in soon.
ii) I've implemented a new snapshot type since, AFAICT, updateable cursors
have a type of tuple visibility. Namely, if the base table of a cursor is
updated based on that cursor, the new and old tuples are removed from the
cursor's set of visible tuples. Like wise, deleted tuples are also
removed.
Thanks,
Gavin