Back-patch fcff8a575198478023ada8a48e13b50f70054766 as a bug fix.
authorKevin Grittner <[email protected]>
Wed, 14 Dec 2016 01:05:35 +0000 (19:05 -0600)
committerKevin Grittner <[email protected]>
Wed, 14 Dec 2016 01:05:35 +0000 (19:05 -0600)
commit5d80171adace192c6d4308ae4b22074d6b0809f3
tree04d23733cc4eab224b14c937036a226cadf7cd10
parent2bdee07abefee3e59db9f89da635d7ecf9716a7b
Back-patch fcff8a575198478023ada8a48e13b50f70054766 as a bug fix.

When there is both a serialization failure and a unique violation,
throw the former rather than the latter.  When initially pushed,
this was viewed as a feature to assist application framework
developers, so that they could more accurately determine when to
retry a failed transaction, but a test case presented by Ian
Jackson has shown that this patch can prevent serialization
anomalies in some cases where a unique violation is caught within a
subtransaction, the work of that subtransaction is discarded, and
no error is thrown.  That makes this a bug fix, so it is being
back-patched to all supported branches where it is not already
present (i.e., 9.2 to 9.5).

Discussion: https://postgr.es/m/1481307991[email protected]
Discussion: https://postgr.es/m/[email protected]
doc/src/sgml/mvcc.sgml
src/backend/access/nbtree/nbtinsert.c
src/test/isolation/expected/read-write-unique-2.out [new file with mode: 0644]
src/test/isolation/expected/read-write-unique-3.out [new file with mode: 0644]
src/test/isolation/expected/read-write-unique-4.out [new file with mode: 0644]
src/test/isolation/expected/read-write-unique.out [new file with mode: 0644]
src/test/isolation/isolation_schedule
src/test/isolation/specs/read-write-unique-2.spec [new file with mode: 0644]
src/test/isolation/specs/read-write-unique-3.spec [new file with mode: 0644]
src/test/isolation/specs/read-write-unique-4.spec [new file with mode: 0644]
src/test/isolation/specs/read-write-unique.spec [new file with mode: 0644]