Bruce Momjian <maillist(at)candle(dot)pha(dot)pa(dot)us> writes:
> I think I may know the cause. The at_exit removal of the temp tables is
> taking place in a failed transaction. Let me test that idea tomorrow.
Take a look at the code for cleaning up the listen/notify table
(Async_UnlistenOnExit() in backend/commands/async.c). It used to
have problems with cleaning up when the last transaction executed
by the backend had failed. I fixed that by aborting any old transaction
and starting/committing a new one. I believe that any at_exit,
on_shmem_exit, etc routine that tries to perform database changes will
need to be coded similarly.
regards, tom lane