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

Support read uncommitted level for bound cursors

    • Type: Icon: New Feature New Feature
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • Labels:
    • Storage Engines
    • StorEng - Defined Pipeline

      Currently there is no support for bounds within cursors when used in conjunction with a read uncommitted isolation level. The work in this ticket will add support for all cursor bound relation operations, cursor->next(), cursor->prev() and cursor->search_near().

      The biggest problem right now is that repositioning of the cursor from a cursor->next(), cursor->prev or cursor->search_near() call to the lower bound or upper bound doesn't respect read uncommitted isolation levels internally. A more in-depth of the implementation will need to deal with how the bound cursor after positioning the cursor __wt_btcur_bounds_position(). After __wt_btcur_bounds_position() is called, it will set a variable need_walk variable which means that the cursor has been positioned outside of the bounds, and will need small positional adjustments to be within the bounds. The current expectation is that the consequent next and prev() will adhere to the isolation snapshot and return a record within bounds. Now this rule doesn't apply for read uncommitted levels, because it is possible that another thread inserts an uncommitted update during the consequent next() or prev(). The expectation is to loop until we find a record that is inside the bounds.

            Assignee:
            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            jie.chen@mongodb.com Jie Chen
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: