On Tue, Dec 27, 2011 at 12:47 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > wcting...@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.
Is that even per spec? I would not expect the results, or the side-effects, of a query to depend on the method used to retrieve its results. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs