While playing with conflict resolution, I bumped into this: postgres=# begin ISOLATION LEVEL SERIALIZABLE; BEGIN postgres=# SELECT * FROM foo; id | data ----+------ 12 | (1 row)
postgres=# SELECT * FROM foo; id | data ----+------ 12 | (1 row) postgres=# SELECT * FROM foo; id | data ----+------ 12 | (1 row) postgres=# SELECT * FROM foo; id | data ----+------ 12 | (1 row) postgres=# SELECT * FROM foo; id | data ----+------ 12 | (1 row) postgres=# SELECT * FROM foo; ERROR: canceling statement due to conflict with recovery postgres=# SELECT * FROM foo; id | data ----+------ 13 | (1 row) postgres=# SELECT * FROM foo; id | data ----+------ 13 | (1 row) postgres=# begin ISOLATION LEVEL SERIALIZABLE; id | data ----+------ 13 | (1 row) postgres=# SELECT * FROM foo; BEGIN postgres=# SELECT * FROM foo; id | data ----+------ 13 | (1 row) The backend and the frontend seem to go out of sync, when a conflict happens in idle-in-transaction mode. -- Heikki Linnakangas EnterpriseDB http://www.enterprisedb.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers