On 2013-12-18 13:07:51 +0200, Heikki Linnakangas wrote:
> Here's another idea that doesn't involve SSI:
>
> At COMMIT, take a new snapshot and check that the assertion still passes
> with that snapshot. Now, there's a race condition, if another transaction is
> committing at the same time, and performs the same check concurrently. That
> race condition can be eliminated by holding an exclusive lock while running
> the assertion, until commit, effectively allowing the assertion to be
> checked by only one transaction at a time.
>
> I think that would work, and would be simple, although it wouldn't scale too
> well.
It probably would also be very prone to deadlocks.
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services