Chester Kustarz <chester@arbor.net> writes:
> I expected "MOVE FORWARD 0 FROM foo;" to always return
> 0, but I have found this not to be the case.
You are misinterpreting the output. The result is the number of rows
that would have been returned by a FETCH with the same parameters.
FETCH 0 means "re-fetch current row" (don't blame us, this is per SQL
spec), and so it will return 1 row unless you are currently positioned
off the end of the result. Hence, MOVE 0 returns either 0 or 1
depending on whether you are currently on a row.
It looks like the MOVE documentation is a bit poorly worded; I'll do
something about that.
regards, tom lane