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

Special case timestamps in compile_configuration

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

      Currently, timestamps are handled as strings by compile_configuration (introduced in WT-11126).  This is because internally, WT code that parses configuration strings expects timestamps to be hex strings. When bound parameters are used, we'll want to have a special indicator, like "%t", that means any bound parameter input would be a uint64_t.  Having this capability implies that for any API that supports compilation, timestamps appearing as strings should be converted to numeric values, just as other numerics are converted.

      An extra twist is that current timestamp config handling allows input timestamps to be set to the empty string.  This is generally the default, and allows this case to be recognized as different from other cases, since the WT parsing code needs to handle this as "the caller did not specify a timestamp for this key".  This is easy with strings, but trickier if we have an integer interface.  Do we have a timestamp returned via wt_conf_gets as a value in cval.val?. And if so, how do we indicate "not set"?  0 (WT_TS_NONE)?  or WT_TS_MAX?  Or do we play some other trick - set cval.len to a non-zero number whenever the value is set (even if it is numeric via a bind call?).

      This ticket encompasses to work to select one of these approaches and implement it.

            Assignee:
            backlog-server-storage-engines [DO NOT USE] Backlog - Storage Engines Team
            Reporter:
            donald.anderson@mongodb.com Donald Anderson
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: