summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorHeikki Linnakangas2011-05-30 17:42:16 +0000
committerHeikki Linnakangas2011-05-30 17:47:17 +0000
commit3103f9a77d005f9d8b8ef492298bbbbf6c4b843f (patch)
tree90c6388951c3cd43f284a88a3ea379513e0e3afc /src/test
parent5177dfefc532ea481bf70d1bb8a493f835a9c57c (diff)
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/test')
-rw-r--r--src/test/isolation/expected/multiple-row-versions.out2
-rw-r--r--src/test/isolation/specs/multiple-row-versions.spec5
2 files changed, 3 insertions, 4 deletions
diff --git a/src/test/isolation/expected/multiple-row-versions.out b/src/test/isolation/expected/multiple-row-versions.out
index cd31029d17b..bbd3ecc0f73 100644
--- a/src/test/isolation/expected/multiple-row-versions.out
+++ b/src/test/isolation/expected/multiple-row-versions.out
@@ -19,6 +19,6 @@ id txt
1
step c4: COMMIT;
step c3: COMMIT;
-ERROR: could not serialize access due to read/write dependencies among transactions
step wz1: UPDATE t SET txt = 'a' WHERE id = 1;
+ERROR: could not serialize access due to read/write dependencies among transactions
step c1: COMMIT;
diff --git a/src/test/isolation/specs/multiple-row-versions.spec b/src/test/isolation/specs/multiple-row-versions.spec
index 8cfe3a44dcb..1bb5b4e8ba2 100644
--- a/src/test/isolation/specs/multiple-row-versions.spec
+++ b/src/test/isolation/specs/multiple-row-versions.spec
@@ -1,8 +1,7 @@
# Multiple Row Versions test
#
-# This test is designed to ensure that predicate locks taken on one version
-# of a row are detected as conflicts when a later version of the row is
-# updated or deleted by a transaction concurrent to the reader.
+# This test is designed to cover some code paths which only occur with
+# four or more transactions interacting with particular timings.
#
# Due to long permutation setup time, we are only testing one specific
# permutation, which should get a serialization error.