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

Reply via email to