When I was investigating this report:
http://archives.postgresql.org/pgsql-bugs/2011-03/msg00349.php
besides providing a straightforward fix here:
http://archives.postgresql.org/pgsql-bugs/2011-03/msg00352.php
I noted that there was nearby code which needed review, as it didn't
seem safe when in a subtransaction. Further review confirmed this
and didn't turn up any other problems in that section of code. So,
a fix for this overreaching optimization is attached. Note that it
is a one-line fix except for some additional comments to explain the
limitation.
This patch is in addition to and orthogonal to the first patch cited
above.
I will add this one to the 9.1 open items list.
-Kevin