Markus Schiltknecht <markus@bluegap.ch> writes:
> in the mean time I've traced the problem down to a 'CONSTRAINT' declared
> as 'DEFERRABLE INITIALLY DEFERED'. As soon as I remove that constraint
> the transaction commits nicely. BTW: I'm running in ISOLATION LEVEL
> SERIALIZABLE, if that matters.
The deferred constraint is probably the victim here (ie, it's
responsible for there being a trigger to fire). The question is where
did its tuple go?
> Has something changed so that it's worth trying current CVS? I'll try to
> come up with a test case, the problem is not easy to isolate, though.
Right offhand the only way that I could see for the tuple to disappear
before the trigger fires is if a concurrent VACUUM removed it, which
should not happen for a tuple inserted by a still-active transaction.
If you've got autovacuum running in the background, the unpredictability
of vacuum timing might be contributing to difficulty of reproducing.
regards, tom lane