The scope is to implement the WiredTiger part 1 of the project oplog durablity:
- Update the WT_UPDATE and WT_TXN structure to add a new member to store durable_timestamp.
- As part of commit transaction, copy the given commit_timestamp to durable_timestamp if it is a prepared transaction and durable_timestamp is not specified.
- Update __rec_txn_read function to check if the session is checkpoint session, if yes make the update visible only if durable_timestamp is earlier than given timestamp.
- Update the eviction to consider the update as uncommitted if durable_timestamp is less than stable_timestamp.
- Enforce durable_timestamp rules.
- For any prepared transaction, durable timestamp has to be specified.
- For any non-prepared transaction, if a durable timestamp is specified, it should be equal to commit_timestamp.
- A durable timestamp should be later than stable timestamp.
- Remove the constraint that a stable timestamp cannot pass past a prepared timestamp.