Tom Lane wrote:
> Alvaro Herrera <alvherre@commandprompt.com> writes:
> > So far as I can see, what we need is to make sure the sinval message is
> > sent regardless of transaction commit/abort. How can that be done?
>
> I would argue that once we've truncated, it's too late to abort. The
> interrupt facility should be disabled from just before issuing the
> truncate till after commit. It would probably be relatively painless to
> do that with some manipulation of the interrupt holdoff stuff.
That cures my (admittedly simplistic) testcase. The patch is a bit ugly
because the interrupts are held off in lazy_vacuum_rel and need to be
released by its caller. I don't see any other way around the problem
though.
The attached patch is for 8.4; back branches all need a bit of editing.
--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support