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. regards, tom lane -- Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-bugs