SPI cursor functions

Started by Tim Keittabout 17 years ago3 messages
#1Tim Keitt
tkeitt@keittlab.org

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

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tim Keitt (#1)
Re: SPI cursor functions

"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

#3Tim Keitt
tkeitt@keittlab.org
In reply to: Tom Lane (#2)
Re: SPI cursor functions

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/