aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/index/indexam.c
diff options
context:
space:
mode:
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>2011-05-30 20:42:16 +0300
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>2011-05-30 20:47:17 +0300
commit3103f9a77d005f9d8b8ef492298bbbbf6c4b843f (patch)
tree90c6388951c3cd43f284a88a3ea379513e0e3afc /src/backend/access/index/indexam.c
parent5177dfefc532ea481bf70d1bb8a493f835a9c57c (diff)
downloadpostgresql-3103f9a77d005f9d8b8ef492298bbbbf6c4b843f.tar.gz
postgresql-3103f9a77d005f9d8b8ef492298bbbbf6c4b843f.zip
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.
Diffstat (limited to 'src/backend/access/index/indexam.c')
-rw-r--r--src/backend/access/index/indexam.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/backend/access/index/indexam.c b/src/backend/access/index/indexam.c
index 08de8b4f88a..27c37d6173f 100644
--- a/src/backend/access/index/indexam.c
+++ b/src/backend/access/index/indexam.c
@@ -612,8 +612,7 @@ index_getnext(IndexScanDesc scan, ScanDirection direction)
* any more members. Otherwise, check for continuation of the
* HOT-chain, and set state for next time.
*/
- if (IsMVCCSnapshot(scan->xs_snapshot)
- && !IsolationIsSerializable())
+ if (IsMVCCSnapshot(scan->xs_snapshot))
scan->xs_next_hot = InvalidOffsetNumber;
else if (HeapTupleIsHotUpdated(heapTuple))
{