RekGRpth <rekgr...@gmail.com> writes: > A patch fixing this bug > https://www.postgresql.org/message-id/flat/15738-21723084f3009ceb%40postgresql.org
I do not think this code change is necessary or appropriate. It is not plpgsql's job to clean up after other backend subsystems during a transaction abort. Maybe if plpgsql were the only thing that invokes spi.c, it would be sane to factorize the responsibility this way --- but of course it is not. The complaint in bug #15738 is 100% bogus, which is probably why it was roundly ignored. The quoted C code is just plain wrong about how to handle errors inside the backend. In particular, SPI_rollback is not even approximately the right thing to do to clean up after catching a thrown exception. regards, tom lane