Scroll cursor oddity...

From: Mike Aubury <mike(dot)aubury(at)aubit(dot)com>
To: PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>
Subject: Scroll cursor oddity...
Date: 2008-04-01 13:39:19
Message-ID: 200804011439.19203.mike.aubury@aubit.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers


Does anyone know what the "correct" behaviour for a scroll cursor should be
when you've scrolled past the end ?

If you take this SQL for example :

create temp table sometab ( a integer);
insert into sometab values(1);
insert into sometab values(2);
insert into sometab values(3);
begin work;

declare c1 scroll cursor for select * from sometab;
fetch next from c1;
fetch next from c1;
fetch next from c1;
fetch next from c1;
fetch prior from c1;
fetch prior from c1;
fetch prior from c1;

The first 4 fetches work as expected and return 1,2,3, and the 4th fetch
returns no rows as its at the end of the list...

** But ** - when I do the fetch prior, I would have expected it to go back to
the '2' row, not the '3' row...

ie - under postgresql it appears we've scrolled *past* the last row and need
an additional fetch to get back to our last row..

For reference - heres what I get as output :

CREATE TABLE
INSERT 32429 1
INSERT 32430 1
INSERT 32431 1
BEGIN
DECLARE CURSOR
a
---
1
(1 row)

a
---
2
(1 row)

a
---
3
(1 row)

a
---
(0 rows)

a
---
3
(1 row)

a
---
2
(1 row)

a
---
1
(1 row)

TIA
--
Mike Aubury

Aubit Computing Ltd is registered in England and Wales, Number: 3112827
Registered Address : Clayton House,59 Piccadilly,Manchester,M1 2AQ

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2008-04-01 13:59:35 Re: build multiple indexes in single table pass?
Previous Message Albe Laurenz 2008-04-01 13:34:17 Improve shutdown during online backup