This visibility check here ignores prepare written to the disk.
/* * Check conflict against the 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. */ if (!rollback && upd == NULL && cbt != NULL && CUR2BT(cbt)->type != BTREE_COL_FIX && cbt->ins == NULL) { __wt_read_cell_time_window(cbt, cbt->ref, &tw); if (tw.stop_txn != WT_TXN_MAX && tw.stop_ts != WT_TS_MAX) rollback = !__wt_txn_visible(session, tw.stop_txn, tw.stop_ts); else rollback = !__wt_txn_visible(session, tw.start_txn, tw.start_ts); }