Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

storage: add MVCC point synthesizing iterator #82013

Merged

Commits on Jun 8, 2022

  1. storage: add MVCC point synthesizing iterator

    This patch adds `pointSynthesizingIter`, an MVCC iterator which wraps an
    arbitrary MVCC iterator and synthesizes point keys for range keys at
    their start key and where they overlap point keys. It can optionally
    synthesize around the SeekGE seek key too, which is useful for point
    operations like `MVCCGet` where we may want to return a synthetic
    tombstone for an MVCC range tombstone if there is no existing point key.
    
    This will primarily be used to handle MVCC range tombstones in MVCC
    scans and gets, as well as during MVCC conflict checks, which allows
    much of this logic to remain unchanged and simplified (in particular,
    `pebbleMVCCScanner` will not need any changes).
    
    However, this patch does not make use of the iterator yet, since both it
    and Pebble will need further performance optimizations for use in hot
    paths. For now, correctness is sufficient, and only basic attempts at
    performance optimization have been made.
    
    Release note: None
    erikgrinaker committed Jun 8, 2022
    Configuration menu
    Copy the full SHA
    d07bf3a View commit details
    Browse the repository at this point in the history