-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
Storage Engines
-
5
-
2023-12-12 - Heisenbug
Summary
When opening a checkpoint cursor on a read-only connection, it hides prepared (but uncommitted) key-value pairs instead of returning the key's old value.
Steps to reproduce
- Create a key/value pair, prepare it, and commit it, e.g., key 2 with value 20, prepare timestamp 0x10, commit timestamp 0x14, and durable timestamp 0x18.
- Overwrite the key/value pair with a new value, prepare it, and commit it, e.g., key 2 with value 21, prepare timestamp 0x20, commit timestamp 0x24, and durable timestamp 0x28.
- Create named checkpoint ckpt1 with stable timestamp that is between the prepare and the commit timestamps, e.g., 0x26.
- Create a nameless checkpoint with a stable timestamp that is past the most recent durable timestamp.
- Reopen the connection as read-only and read the key using checkpoint ckpt1. Or use wt -r dump -c ckpt1 table:test to view the contents of the database.