- Notifications
You must be signed in to change notification settings - Fork5
Commit47ad791
committed
Fix bugs in Serializable Snapshot Isolation.
Change the way UPDATEs are handled. Instead of maintaining a chain oftuple-level locks in shared memory, copy any existing locks on the oldtuple to the new tuple at UPDATE. Any existing page-level lock needs tobe duplicated too, as a lock on the new tuple. That was neglectedpreviously.Store xmin on tuple-level predicate locks, to distinguish a lock on an oldalready-recycled tuple from a new tuple at the same physical location.Failure to distinguish them caused loops in the tuple-lock chains, asreported by YAMAMOTO Takashi. Although we don't use the chain representationof UPDATEs anymore, it seems like a good idea to store the xmin to avoidsome false positives if no other reason.CheckSingleTargetForConflictsIn now correctly handles the case where a lockthat's being held is not reflected in the local lock table. That happensif another backend acquires a lock on our behalf due to an UPDATE or a pagesplit.PredicateLockPageCombine now retains locks for the page that is beingremoved, rather than removing them. This prevents a potentially dangerousfalse-positive inconsistency where the local lock table believes that a lockis held, but it is actually not.Dan Ports and Kevin Grittner1 parent16143d6 commit47ad791
File tree
4 files changed
+148
-291
lines changed- src
- backend
- access/nbtree
- storage/lmgr
- include/storage
4 files changed
+148
-291
lines changedLines changed: 0 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
824 | 824 |
| |
825 | 825 |
| |
826 | 826 |
| |
827 |
| - | |
828 | 827 |
| |
829 | 828 |
| |
830 | 829 |
| |
|
0 commit comments
Comments
(0)