bobby.rullo@coreos.com writes:
> To reproduce:
> 1) execute statements in sequence 1 on a connection, stopping at the
> "--EXECUTE" statement.
> 2) In another connection, execute all the statements in Sequence 2.
> 3) Back in the first connection execute the remaining statement (the
> "commit;")
> Expected:
> error when trying to commit, eg. "ERROR: could not serialize"
> Actual:
> Both commits succeed.
> Interesting tidbit:
> If you do the exact steps as above but uncomment the "select count(*)" in
> sequence 2, you get the expected error.
This seems perfectly fine to me. Without the "select count(*)" in
transaction 2, there is a valid serialization of the transactions,
ie t1 before t2. Serializability is *not* defined as "the transactions
appear to have executed in the order they were started (or committed)".
It is defined as "there is some consistent order in which they appear
to have executed".
regards, tom lane