Thread: CURSOR after hitting end

CURSOR after hitting end

From
Bruce Momjian
Date:
We have this in the CURSOR documentation:
      Once  all  rows  are  fetched,  every  other  fetch access      returns no rows.

Is this still true?

--  Bruce Momjian                        |  http://www.op.net/~candle pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


Re: CURSOR after hitting end

From
Tom Lane
Date:
Bruce Momjian <pgman@candle.pha.pa.us> writes:
> We have this in the CURSOR documentation:
>        Once  all  rows  are  fetched,  every  other  fetch access
>        returns no rows.

> Is this still true?

Not if you then move or fetch backwards, I should think...
        regards, tom lane


Re: CURSOR after hitting end

From
Bruce Momjian
Date:
> Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > We have this in the CURSOR documentation:
> >        Once  all  rows  are  fetched,  every  other  fetch access
> >        returns no rows.
> 
> > Is this still true?
> 
> Not if you then move or fetch backwards, I should think...

No, it works.  I think Tatsuo fixed it.  After a FETCH ALL, I did this,
and it worked:

test=> fetch -1  from bigtable_cursor; customer_id -------------        1000(1 row)test=> fetch -1  from
bigtable_cursor;customer_id -------------         999(1 row)
 

--  Bruce Momjian                        |  http://www.op.net/~candle pgman@candle.pha.pa.us               |  (610)
853-3000+  If your life is a hard drive,     |  830 Blythe Avenue +  Christ can be your backup.        |  Drexel Hill,
Pennsylvania19026
 


RE: CURSOR after hitting end

From
"Hiroshi Inoue"
Date:
> -----Original Message-----
> From: pgsql-hackers-owner@hub.org [mailto:pgsql-hackers-owner@hub.org]On
> Behalf Of Bruce Momjian
> 
> > Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > > We have this in the CURSOR documentation:
> > >        Once  all  rows  are  fetched,  every  other  fetch access
> > >        returns no rows.
> > 
> > > Is this still true?
> > 
> > Not if you then move or fetch backwards, I should think...
> 
> No, it works.  I think Tatsuo fixed it.  After a FETCH ALL, I did this,
> and it worked:
>

This is true and false.
For index scan I fixed it before 6.5 and for sequential scan
I fixed it before 7.0.

However there remains some type of scan that returns no rows
after hitting end.
Especially for GROUP BY,*fetch backward* doesn't work well 
fundamentally.  I have known this but I've never seen bug
reports for this.  It's not so easy to fix this and it wouldn't be
an effective way to scan base relation again for *GROUP BY*.

Regards.

Hiroshi Inoue
Inoue@tpf.co.jp


Re: CURSOR after hitting end

From
Tatsuo Ishii
Date:
> > Bruce Momjian <pgman@candle.pha.pa.us> writes:
> > > We have this in the CURSOR documentation:
> > >        Once  all  rows  are  fetched,  every  other  fetch access
> > >        returns no rows.
> > 
> > > Is this still true?
> > 
> > Not if you then move or fetch backwards, I should think...
> 
> No, it works.  I think Tatsuo fixed it.  After a FETCH ALL, I did this,         ~~~~~~must be Hiroshi...
> and it worked:
--
Tatsuo Ishii