github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/testdata/iterator_bounds_lifetimes (about)

     1  new-iter label=first lower=bar upper=foo
     2  ----
     3  first: ("bar", "foo") boundsBufIdx=1
     4  
     5  iter label=first
     6  first
     7  next
     8  ----
     9  bb@29: (bb@29, .)
    10  bc@30: (bc@30, .)
    11  
    12  # Clone an iterator from the original iterator. The clone should have its own
    13  # copy of the bounds.
    14  
    15  clone from=first to=second
    16  ----
    17  first: ("bar", "foo") boundsBufIdx=1
    18  second: ("bar", "foo") boundsBufIdx=1
    19  
    20  iter label=second
    21  last
    22  prev
    23  ----
    24  fo@150: (fo@150, .)
    25  fn@149: (fn@149, .)
    26  
    27  # Changing the bounds on the original should leave the clone's bounds unchanged.
    28  
    29  set-bounds label=first lower=boop
    30  ----
    31  first: ("boop", <nil>) boundsBufIdx=0
    32  second: ("bar", "foo") boundsBufIdx=1
    33  
    34  iter label=first
    35  seek-ge goop
    36  ----
    37  gp@178: (gp@178, .)
    38  
    39  iter label=second
    40  prev
    41  ----
    42  fm@148: (fm@148, .)
    43  
    44  set-bounds label=first lower=boop upper=bop
    45  ----
    46  first: ("boop", "bop") boundsBufIdx=1
    47  second: ("bar", "foo") boundsBufIdx=1
    48  
    49  # Changing the bounds on the clone should leave the original's bounds unchanged.
    50  
    51  set-options label=second lower=a upper=z
    52  ----
    53  first: ("boop", "bop") boundsBufIdx=1
    54  second: ("a", "z") boundsBufIdx=0
    55  
    56  # Test no-op set-options. The boundsBufIdx should remain unchanged, reflecting
    57  # that the bounds were not copied again.
    58  
    59  set-options label=second lower=a upper=z
    60  ----
    61  first: ("boop", "bop") boundsBufIdx=1
    62  second: ("a", "z") boundsBufIdx=0
    63  
    64  # Test SetOptions with unchanged bounds but changes to other options. SetOptions
    65  # should hold onto the existing bounds buffers. The boundsBufIdx should still
    66  # remain unchanged, reflecting that the bounds were not copied.
    67  
    68  set-options label=second lower=a upper=z key-types=both
    69  ----
    70  first: ("boop", "bop") boundsBufIdx=1
    71  second: ("a", "z") boundsBufIdx=0
    72  
    73  iter label=second
    74  seek-ge foo
    75  ----
    76  fp@151: (fp@151, .)
    77  
    78  close label=first
    79  ----
    80  second: ("a", "z") boundsBufIdx=0
    81  
    82  close label=second
    83  ----