-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
It turns out that reading from a history store checkpoint correctly requires doing accurate visible_all checks relative to the checkpoint context; bypassing them doesn't work. This is because it's possible for outdated history store entries with globally visible stop times and nonzero start times to hang around; they are necessarily sorted (and thus seen during reads) before more recently added entries with zero start times and later stop times. They're supposed to be skipped over via a global visibility check; that check can't be shortcut. (Assuming all stop times are globally visible causes items to disappear; assuming none are causes obsolete stop times to be honored and thus also causes items to disappear.) Therefore, visible_all needs to be able to test against the checkpoint's oldest timestamp and the checkpoint's transaction state. Fortunately all the needed information is reasonably readily available...