diff options
Diffstat (limited to 'src/third_party/wiredtiger/src/include/txn_inline.h')
-rw-r--r-- | src/third_party/wiredtiger/src/include/txn_inline.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/third_party/wiredtiger/src/include/txn_inline.h b/src/third_party/wiredtiger/src/include/txn_inline.h index 7beeb00c44b..98a2a90d46f 100644 --- a/src/third_party/wiredtiger/src/include/txn_inline.h +++ b/src/third_party/wiredtiger/src/include/txn_inline.h @@ -1348,8 +1348,13 @@ __wt_txn_modify_check( * Check conflict against any on-page value if there is no update on the update chain except * aborted updates. Otherwise, we would have either already detected a conflict if we saw an * uncommitted update or determined that it would be safe to write if we saw a committed update. + * + * In the case of row-store we also need to check that the insert list is empty as the existence + * of it implies there is no on disk value for the given key. However we can still get a + * time-window from an unrelated on-disk value if we are not careful as the slot can still be + * set on the cursor b-tree. */ - if (!rollback && upd == NULL) { + if (!rollback && upd == NULL && (CUR2BT(cbt)->type != BTREE_ROW || cbt->ins == NULL)) { tw_found = __wt_read_cell_time_window(cbt, &tw); if (tw_found) { if (WT_TIME_WINDOW_HAS_STOP(&tw)) { |