Re:Hermitage: Testing the “I” in ACID
by jasonwatkinspdx on Wednesday November 26, 2014 @01:18AM
(#8661302)
In short: prior to version 9.2, postgres's "serializable" level still allowed some transaction patterns that would be rejected by a strictly serial execution. Later versions prevent it.
This paper: http://dl.acm.org/citation.cfm?id=1376690 outlines the general issue. This paper discusses Postgres's solution: http://drkp.net/papers/ssi-vldb12.pdf
Your example check constraint indeed appears to work as advertised. Trying
gives an ERROR message re: new row for relation "account" violates check constraint ...Still it's not clear exactly what the author sees re: where postgres fails. I'll have to read the article again. With any luck someone more knowledgeable than I am will shed light on the question.