Re: BUG #6360: with hold cursor, cause function executed twice and wrong results - Mailing list pgsql-bugs

From Tom Lane
Subject Re: BUG #6360: with hold cursor, cause function executed twice and wrong results
Date
Msg-id 11717.1325008040@sss.pgh.pa.us
Whole thread Raw
In response to BUG #6360: with hold cursor, cause function executed twice and wrong results  (wcting163@163.com)
Responses Re: BUG #6360: with hold cursor, cause function executed twice and wrong results  (wcting163 <wcting163@163.com>)
Re: BUG #6360: with hold cursor, cause function executed twice and wrong results  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-bugs
wcting163@163.com writes:
> The reason is that the function p_test_execute is executed twice, when
> *fetch*, it is first executed, and when transaction commit, because the
> cursor is a *holdable* cursor, it is executed again.

Yup.  I don't particularly see this as a bug.  If you were to manually
rewind and rescan the cursor (ie, MOVE BACKWARD ALL and re-fetch),
the function would be executed multiple times too.  If you don't want
that to happen, the best way would be to commit the transaction
immediately, not fetch some rows and then commit.

            regards, tom lane

pgsql-bugs by date:

Previous
From: Phil Sorber
Date:
Subject: Re: converting between infinity timestamp and float8 (epoch)
Next
From: Tom Lane
Date:
Subject: Re: converting between infinity timestamp and float8 (epoch)