The row-version chaining in Serializable Snapshot Isolation was still wrong.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 30 May 2011 17:42:16 +0000 (20:42 +0300)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Mon, 30 May 2011 17:47:17 +0000 (20:47 +0300)
commit3103f9a77d005f9d8b8ef492298bbbbf6c4b843f
tree90c6388951c3cd43f284a88a3ea379513e0e3afc
parent5177dfefc532ea481bf70d1bb8a493f835a9c57c
The row-version chaining in Serializable Snapshot Isolation was still wrong.
On further analysis, it turns out that it is not needed to duplicate predicate
locks to the new row version at update, the lock on the version that the
transaction saw as visible is enough. However, there was a different bug in
the code that checks for dangerous structures when a new rw-conflict happens.
Fix that bug, and remove all the row-version chaining related code.

Kevin Grittner & Dan Ports, with some comment editorialization by me.
src/backend/access/heap/heapam.c
src/backend/access/index/indexam.c
src/backend/storage/lmgr/README-SSI
src/backend/storage/lmgr/predicate.c
src/include/storage/predicate.h
src/test/isolation/expected/multiple-row-versions.out
src/test/isolation/specs/multiple-row-versions.spec