Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
> On all versions starting from 8.0 where subtransactions were introduced,
> this causes an assertion failure:
Ugh :-(
This ties into the more general issue that it's not clear what effect a
subtransaction rollback should have on a cursor. You could argue that
ideally the cursor should revert to its pre-savepoint state. We didn't
implement that in 8.0 because it seemed too hard, but this bug shows
that not rolling back the cursor isn't exactly easy either.
Not sure what to do. The only fix that seems bulletproof at the moment
is to declare that any cursor that's been touched at all in a
subtransaction is marked "broken" if the subtransaction rolls back.
That might be too great a loss of functionality. It would block off
the controversial aspects of behavior though ...
regards, tom lane