The following bug has been logged on the website:
Bug reference: 6497
Logged by: Ryan Lowe
Email address: rlowe@pablowe.net
PostgreSQL version: 9.1.3
Operating system: Linux
Description:=20=20=20=20=20=20=20=20
There is an edge case where Postgres will return an error to the client, but
commit the operation anyway, thus breaking the contract with the client:
postgres=3D# begin; insert into s.t (c) values (1);
<postgres process core dumps (note that the forked processes were not
affected)>
postgres=3D# commit;
<this returns an error to the application>
<postgress process restarts>
The data is now on both the master and slave, but the application
believes that the transaction was rolled back. A well-behaved
application will dutifully retry the transaction because it *should*
have rolled back. However, the data is there so we'll have had the
transaction execute *twice*.