> Bruce Momjian <maillist@candle.pha.pa.us> writes:
> > Yep. Wouldn't the best way be to have the temp system record the
> > transaction id used, and to invalidate all temp entries associated with
> > an aborted transaction. That is how the cache code works, so it seems
> > it should be extended to the temp code.
>
> Yeah, that would work -- add an xact abort cleanup routine that goes
> through the temprel list and removes entries added during the current
> transaction.
>
> AFAICS this only explains the coredump-at-exit business, though.
> I'm particularly baffled by that
> ERROR: cannot find attribute 1 of relation pg_temp.24335.3
> in my last example --- do you understand why that's happening?
>
> regards, tom lane
>
I have added temp invalidation code for aborted transactions:
---------------------------------------------------------------------------
Old behavour:test=> begin;BEGINtest=> create temp table test (x int);CREATEtest=> create index i_test on
test(x);CREATEtest=>abort;NOTICE: trying to delete a reldesc that does not exist.NOTICE: trying to delete a reldesc
thatdoes not exist.ABORTtest=> create temp table test (x int);ERROR: Relation 'test' already exists
---------------------------------------------------------------------------
New behavour:
test=> begin;BEGINtest=> create temp table test (x int);CREATEtest=> create index i_test on test(x);CREATEtest=>
abort;NOTICE: trying to delete a reldesc that does not exist.NOTICE: trying to delete a reldesc that does not
exist.ABORTtest=>create temp table test(x int);CREATE
-- Bruce Momjian | http://www.op.net/~candle maillist@candle.pha.pa.us | (610)
853-3000+ If your life is a hard drive, | 830 Blythe Avenue + Christ can be your backup. | Drexel Hill,
Pennsylvania19026