Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-8193

Wrong corner case in VLCS rollback-to-stable

      It turns out that it's not sufficient to skip iterating a column-store cell (one with more than one key because the RLE count > 0) just because there's at least one stable update for some key in the cell.

      This is true in a fully timestamped world (in a fully timestamped world, a stable update must be newer than the on-disk value) but breaks down if the stable update in question has no timestamp. Then it guarantees nothing about the on-disk value, so it might not be stable and still need to be processed. One can only skip the iteration if every key in the cell has a stable update (fortunately this is easy to determine) and then when iterating one must check each key's update list separately, because calling the downstream code for handling on-disk values if there actually is a stable update can cause it to do the wrong thing.

      Fix coming right up...

            haribabu.kommi@mongodb.com Haribabu Kommi
            dholland+wt@sauclovia.org David Holland
            0 Vote for this issue
            1 Start watching this issue