daniel.gottlieb asked me a question I couldn't fully answer yesterday and we need to both fully test and understand what WiredTiger does and should do in this case. Consider successive transactions that operate on the same key/value data. What happens if txn1 commit updates the data D using timestamp T and then txn2 commit updates the data D+1 with no timestamp?
- What happens to D+1 data on rollback to timestamp to, say, T-1?
- What happens if a checkpoint occurs immediately after txn2 commits? Does D+1 end up on disk?
- If D+1 depends on D, is it user error to mix timestamp usage?
- How does anything change if the timestamp usage is on a table that is logged versus not-logged?
We need to figure out what the behavior should be and write a test or two to verify we're doing the right thing.