Thread: SPI cursor functions

SPI cursor functions

From
"Tim Keitt"
Date:
The docs for FETCH indicate you can fetch from the current row using
FORWARD 0, but
   SPI_scroll_cursor_fetch(someportal, FETCH_FORWARD, 0);

fails for me. Is there a way to emulate FETCH FORWARD 0 with SPI?

Also, I noticed that
  SPI_scroll_cursor_move(someportal, FETCH_BACKWARD, 1);

sets SPI_processed to 0, not 1. Is that the intended behavior? How
does one check for a failed backwards move?

Thanks.

THK

-- 
Timothy H. Keitt
University of Texas at Austin http://www.keittlab.org/
Contact info and schedule at http://www.keittlab.org/~tkeitt/
Publications http://www.keittlab.org/biblio


Re: SPI cursor functions

From
Tom Lane
Date:
"Tim Keitt" <tkeitt@keittlab.org> writes:
> The docs for FETCH indicate you can fetch from the current row using
> FORWARD 0, but

>     SPI_scroll_cursor_fetch(someportal, FETCH_FORWARD, 0);

> fails for me. Is there a way to emulate FETCH FORWARD 0 with SPI?

Fails how?  AFAICS that calls the same code that the SQL-level
FETCH command would.

You do realize that "FORWARD 0" means to re-fetch the current row,
ie the most recently fetched row?  There isn't any current row in
the initial state of a cursor.

> Also, I noticed that
>    SPI_scroll_cursor_move(someportal, FETCH_BACKWARD, 1);
> sets SPI_processed to 0, not 1. Is that the intended behavior?

Well, it is if you don't have any row to move backward to ...
        regards, tom lane


Re: SPI cursor functions

From
"Tim Keitt"
Date:
On Fri, Oct 24, 2008 at 7:57 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> "Tim Keitt" <tkeitt@keittlab.org> writes:
>> The docs for FETCH indicate you can fetch from the current row using
>> FORWARD 0, but
>
>>     SPI_scroll_cursor_fetch(someportal, FETCH_FORWARD, 0);
>
>> fails for me. Is there a way to emulate FETCH FORWARD 0 with SPI?
>
> Fails how?  AFAICS that calls the same code that the SQL-level
> FETCH command would.
>
> You do realize that "FORWARD 0" means to re-fetch the current row,
> ie the most recently fetched row?  There isn't any current row in
> the initial state of a cursor.

Yes I do. The problem was my test case wasn't doing what I thought it
was doing. Its working now.

>
>> Also, I noticed that
>>    SPI_scroll_cursor_move(someportal, FETCH_BACKWARD, 1);
>> sets SPI_processed to 0, not 1. Is that the intended behavior?
>
> Well, it is if you don't have any row to move backward to ...

Got it. Again, the test case was screwed up. Also, I was trying
interpret SPI_processed as a kind of error flag, but clearly that's
the wrong way to think about it.

Thanks for the help.

THK

>
>                        regards, tom lane
>



-- 
Timothy H. Keitt
http://www.keittlab.org/