From: | Kevin Wooten <kdubb(at)me(dot)com> |
---|---|
To: | John Meyer <johnmeyer(at)pueblocomputing(dot)com> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: Scrolling/Updating Cursors |
Date: | 2013-11-22 21:46:35 |
Message-ID: | 49897DD1-F979-43C0-9667-312CEA8807FF@me.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Nov 22, 2013, at 2:32 PM, John Meyer <johnmeyer(at)pueblocomputing(dot)com> wrote:
> Why not both? I keep on searching even when I post up a question.
>
Just attempting to be polite and not cross post to too much. I have pretty much exhausted my own search and now am relying on the kindness and knowledge of others ;)
> On 11/22/2013 2:27 PM, Kevin Wooten wrote:
>> On Nov 19, 2013, at 6:33 PM, Kevin Wooten <kdubb(at)me(dot)com> wrote:
>>
>>> My apologies for posting what is almost certainly somewhat of a repeat question but I have searched and attempted everything I can think of and cannot figure it out myself.
>>>
>>> The basic question is… Is it possible to get a scrollable cursor that, within a transaction, can insert/update/delete rows and see those changes?
>>>
>>> Why you ask? Because I am implementing the JDBC 4.1 spec and it (optionally) provides this ability and I’d like to provide it if possible. I thought just using a scrollable cursor with the isolation-level set to repeatable-read would do the trick but it still seems to see no changes (inserts/updates/deletes).
>>>
>>> Effectively I want roughly this sequence of events to work.
>>>
>>> CREATE TABLE test (val text);
>>>
>>> BEGIN; # Could include ISOLATION LEVEL REPEATABLE READ
>>>
>>> DECLARE c1 CURSOR FOR SELECT * FROM test;
>>>
>>> FETCH ABSOLUTE 1; # Returns No Row
>>>
>>> INSERT INTO test VALUES (‘1');
>>> INSERT INTO test VALUES (‘2');
>>> INSERT INTO test VALUES (‘3');
>>>
>>> FETCH ABSOLUTE 1; # Returns “1”
>>> FETCH NEXT: # Returns “2"
>>> DELETE FROM test WHERE CURRENT OF c1; # Deletes “2”
>>>
>>> FETCH ABSOLUTE 1; # Returns “1”
>>> FETCH NEXT; # Returns “3”
>>> UPDATE test SET val=‘4' WHERE CURRENT OF c1;
>>> FETCH RELATIVE 0; # Returns “4”
>>>
>>> COMMIT;
>>>
>>> Thanks!
>>>
>>> -kw
>>>
>>
>> Should I take silence to mean this cannot be done? Or should I send to -hackers?
>>
>>
>>
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2013-11-22 21:52:53 | Re: [GENERAL] pg_upgrade ?deficiency |
Previous Message | Kevin Grittner | 2013-11-22 21:34:18 | Re: [GENERAL] pg_upgrade ?deficiency |