# Tests range tombstone handling in MVCCIncrementalIterator. It does not support
# reverse iteration, as it does not implement MVCCIterator.
#
# Sets up the following dataset, where x is tombstone, o-o is range tombstone, [] is intent.
#
#  8             [d8]                                [m8]
#  7 [a7]                                [j7]    [l7]       [o7]
#  6                      f6
#  5          o---------------o               k5
#  4  x   x       d4      f4  g4  x
#  3      o-------o   e3  o-------oh3                 o---o
#  2  a2                  f2  g2
#  1  o---------------------------------------o
#     a   b   c   d   e   f   g   h   i   j   k   l   m   n   o
#
run stats ok
del_range_ts k=a end=k ts=1
put k=a ts=2 v=a2
del k=a ts=4
del_range_ts k=b end=d ts=3
del k=b ts=4
put k=d ts=4 v=d4
put k=e ts=3 v=e3
put k=f ts=2 v=f2
put k=g ts=2 v=g2
del_range_ts k=f end=h ts=3
put k=f ts=4 v=f4
del_range_ts k=c end=g ts=5
put k=f ts=6 v=f6
put k=g ts=4 v=g4
put k=h ts=3 v=h3
del k=h ts=4
put k=k ts=5 v=k5
del_range_ts k=m end=n ts=3 localTs=2
with t=A
  txn_begin ts=7
  put k=a v=a7
  put k=j v=j7
  put k=l v=l7
  put k=o v=o7
with t=B
  txn_begin ts=8
  put k=d v=d8
  put k=m v=m8
----
>> del_range_ts k=a end=k ts=1
stats: range_key_count=+1 range_key_bytes=+13 range_val_count=+1 gc_bytes_age=+1287
>> put k=a ts=2 v=a2
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> del k=a ts=4
del: "a": found key true
stats: key_bytes=+12 val_count=+1 live_count=-1 live_bytes=-21 gc_bytes_age=+3168
>> del_range_ts k=b end=d ts=3
stats: range_key_count=+2 range_key_bytes=+35 range_val_count=+3 gc_bytes_age=+3439
>> del k=b ts=4
del: "b": found key false
stats: key_count=+1 key_bytes=+14 val_count=+1 gc_bytes_age=+1344
>> put k=d ts=4 v=d4
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> put k=e ts=3 v=e3
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> put k=f ts=2 v=f2
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> put k=g ts=2 v=g2
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> del_range_ts k=f end=h ts=3
stats: range_key_count=+2 range_key_bytes=+35 range_val_count=+3 live_count=-2 live_bytes=-42 gc_bytes_age=+7513
>> put k=f ts=4 v=f4
stats: key_bytes=+12 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21 gc_bytes_age=-194
>> del_range_ts k=c end=g ts=5
stats: range_key_count=+2 range_key_bytes=+71 range_val_count=+7 live_count=-3 live_bytes=-63 gc_bytes_age=+12822
>> put k=f ts=6 v=f6
stats: key_bytes=+12 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21 gc_bytes_age=-190
>> put k=g ts=4 v=g4
stats: key_bytes=+12 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21 gc_bytes_age=-194
>> put k=h ts=3 v=h3
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> del k=h ts=4
del: "h": found key true
stats: key_bytes=+12 val_count=+1 live_count=-1 live_bytes=-21 gc_bytes_age=+3168
>> put k=k ts=5 v=k5
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+7 live_count=+1 live_bytes=+21
>> del_range_ts k=m end=n ts=3 localTs=2
stats: range_key_count=+1 range_key_bytes=+13 range_val_count=+1 range_val_bytes=+13 gc_bytes_age=+2522
>> put k=a v=a7 t=A
put: lock acquisition = {a id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0 Replicated Intent []}
stats: key_bytes=+12 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+69 gc_bytes_age=-192 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+93
>> put k=j v=j7 t=A
put: lock acquisition = {j id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0 Replicated Intent []}
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+69 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+93
>> put k=l v=l7 t=A
put: lock acquisition = {l id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0 Replicated Intent []}
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+69 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+93
>> put k=o v=o7 t=A
put: lock acquisition = {o id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0 Replicated Intent []}
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+69 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+93
>> put k=d v=d8 t=B
put: lock acquisition = {d id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0 Replicated Intent []}
stats: key_bytes=+12 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+69 gc_bytes_age=-190 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+92
>> put k=m v=m8 t=B
put: lock acquisition = {m id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0 Replicated Intent []}
stats: key_count=+1 key_bytes=+14 val_count=+1 val_bytes=+55 live_count=+1 live_bytes=+69 intent_count=+1 intent_bytes=+19 lock_count=+1 lock_age=+92
>> at end:
txn: "B" meta={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} lock=true stat=PENDING rts=8.000000000,0 wto=false gul=0,0
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
meta: "a"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "a"/7.000000000,0 -> /BYTES/a7
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
meta: "d"/0,0 -> txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "d"/8.000000000,0 -> /BYTES/d8
data: "d"/4.000000000,0 -> /BYTES/d4
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/4.000000000,0 -> /BYTES/f4
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /BYTES/g4
data: "g"/2.000000000,0 -> /BYTES/g2
data: "h"/4.000000000,0 -> /<empty>
data: "h"/3.000000000,0 -> /BYTES/h3
meta: "j"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "j"/7.000000000,0 -> /BYTES/j7
data: "k"/5.000000000,0 -> /BYTES/k5
meta: "l"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "l"/7.000000000,0 -> /BYTES/l7
meta: "m"/0,0 -> txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "m"/8.000000000,0 -> /BYTES/m8
meta: "o"/0,0 -> txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
data: "o"/7.000000000,0 -> /BYTES/o7
stats: key_count=12 key_bytes=252 val_count=19 val_bytes=400 range_key_count=8 range_key_bytes=167 range_val_count=15 range_val_bytes=13 live_count=9 live_bytes=477 gc_bytes_age=34303 intent_count=6 intent_bytes=114 lock_count=6 lock_age=556

# Iterate across the entire span for all key types.
run ok
iter_new_incremental types=pointsOnly intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "a"/4.000000000,0=/<empty>
iter_scan: "a"/2.000000000,0=/BYTES/a2
iter_scan: "b"/4.000000000,0=/<empty>
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/8.000000000,0=/BYTES/d8
iter_scan: "d"/4.000000000,0=/BYTES/d4
iter_scan: "e"/3.000000000,0=/BYTES/e3
iter_scan: "f"/6.000000000,0=/BYTES/f6
iter_scan: "f"/4.000000000,0=/BYTES/f4
iter_scan: "f"/2.000000000,0=/BYTES/f2
iter_scan: "g"/4.000000000,0=/BYTES/g4
iter_scan: "g"/2.000000000,0=/BYTES/g2
iter_scan: "h"/4.000000000,0=/<empty>
iter_scan: "h"/3.000000000,0=/BYTES/h3
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=rangesOnly intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

# Iterate across the span while moving StartTime upwards.
run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=1
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "a"/4.000000000,0=/<empty>
iter_scan: "a"/2.000000000,0=/BYTES/a2
iter_scan: {b-c}/[3.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty>]
iter_scan: "h"/4.000000000,0=/<empty> !
iter_scan: "h"/3.000000000,0=/BYTES/h3
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=2
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "a"/4.000000000,0=/<empty>
iter_scan: {b-c}/[3.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty>]
iter_scan: "h"/4.000000000,0=/<empty> !
iter_scan: "h"/3.000000000,0=/BYTES/h3
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=3
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "a"/4.000000000,0=/<empty>
iter_scan: "b"/4.000000000,0=/<empty>
iter_scan: {c-d}/[5.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty>]
iter_scan: "g"/4.000000000,0=/BYTES/g4 !
iter_scan: "h"/4.000000000,0=/<empty>
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=4
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: {c-d}/[5.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=5
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/8.000000000,0=/BYTES/d8
iter_scan: "f"/6.000000000,0=/BYTES/f6
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=6
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/8.000000000,0=/BYTES/d8
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=7
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/8.000000000,0=/BYTES/d8
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=8
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: .
iter_scan: .

# Iterate across the span while moving EndTime downwards.
run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=8
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=7
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=6
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=5
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=4
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[1.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[1.000000000,0=/<empty>]
iter_scan: {f-g}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=3
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {c-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[1.000000000,0=/<empty>] !
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[1.000000000,0=/<empty>]
iter_scan: {f-g}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=2
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[1.000000000,0=/<empty>] !
iter_scan: {c-d}/[1.000000000,0=/<empty>] !
iter_scan: {d-f}/[1.000000000,0=/<empty>] !
iter_scan: {f-g}/[1.000000000,0=/<empty>] !
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[1.000000000,0=/<empty>]
iter_scan: {g-h}/[1.000000000,0=/<empty>] !
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit endTs=1
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {b-c}/[1.000000000,0=/<empty>] !
iter_scan: {c-d}/[1.000000000,0=/<empty>] !
iter_scan: {d-f}/[1.000000000,0=/<empty>] !
iter_scan: {f-g}/[1.000000000,0=/<empty>] !
iter_scan: {g-h}/[1.000000000,0=/<empty>] !
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: .

# Run a scan of a single timestamp going upwards.
run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=0 endTs=1
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {b-c}/[1.000000000,0=/<empty>] !
iter_scan: {c-d}/[1.000000000,0=/<empty>] !
iter_scan: {d-f}/[1.000000000,0=/<empty>] !
iter_scan: {f-g}/[1.000000000,0=/<empty>] !
iter_scan: {g-h}/[1.000000000,0=/<empty>] !
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=1 endTs=2
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/2.000000000,0=/BYTES/a2
iter_scan: "a"/2.000000000,0=/BYTES/a2
iter_scan: "f"/2.000000000,0=/BYTES/f2
iter_scan: "g"/2.000000000,0=/BYTES/g2
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=2 endTs=3
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {b-c}/[3.000000000,0=/<empty>] !
iter_scan: {b-c}/[3.000000000,0=/<empty>] !
iter_scan: {c-d}/[3.000000000,0=/<empty>] !
iter_scan: "e"/3.000000000,0=/BYTES/e3 !
iter_scan: {f-g}/[3.000000000,0=/<empty>] !
iter_scan: {g-h}/[3.000000000,0=/<empty>] !
iter_scan: "h"/3.000000000,0=/BYTES/h3 !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=3 endTs=4
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_scan: "a"/4.000000000,0=/<empty>
iter_scan: "b"/4.000000000,0=/<empty>
iter_scan: "d"/4.000000000,0=/BYTES/d4
iter_scan: "f"/4.000000000,0=/BYTES/f4
iter_scan: "g"/4.000000000,0=/BYTES/g4
iter_scan: "h"/4.000000000,0=/<empty>
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=4 endTs=5
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {c-d}/[5.000000000,0=/<empty>] !
iter_scan: {c-d}/[5.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty>] !
iter_scan: {f-g}/[5.000000000,0=/<empty>] !
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=5 endTs=6
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "f"/6.000000000,0=/BYTES/f6
iter_scan: "f"/6.000000000,0=/BYTES/f6
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=6 endTs=7
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=7 endTs=8
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/8.000000000,0=/BYTES/d8
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges intents=emit startTs=8 endTs=9
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: .
iter_scan: .

# Bounded scan.
run ok
iter_new_incremental types=pointsAndRanges k=ccc end=fff intents=emit startTs=1 endTs=5
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {ccc-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: {ccc-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty>]
iter_scan: f{-ff}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: "f"/4.000000000,0=/BYTES/f4 f{-ff}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 f{-ff}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>]
iter_scan: .

# NextKey across span, unbounded and bounded.
run ok
iter_new_incremental types=pointsAndRanges intents=emit
iter_seek_ge k=a
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
iter_next_key
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_next_key: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_next_key: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_next_key: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_next_key: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_next_key: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_next_key: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_next_key: {h-k}/[1.000000000,0=/<empty>] !
iter_next_key: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_next_key: "k"/5.000000000,0=/BYTES/k5 !
iter_next_key: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_next_key: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_next_key: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_next_key: .

run ok
iter_new_incremental types=pointsAndRanges k=ccc end=fff intents=emit startTs=1 endTs=5
iter_seek_ge k=a
iter_next_key
iter_next_key
iter_next_key
iter_next_key
----
iter_seek_ge: {ccc-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_next_key: {d-f}/[5.000000000,0=/<empty>] !
iter_next_key: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty>]
iter_next_key: f{-ff}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_next_key: .

# Seek to every point location.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=1 endTs=4 intents=emit
iter_seek_ge k=a
iter_seek_ge k=b
iter_seek_ge k=c
iter_seek_ge k=d
iter_seek_ge k=e
iter_seek_ge k=f
iter_seek_ge k=g
iter_seek_ge k=h
iter_seek_ge k=i
iter_seek_ge k=j
iter_seek_ge k=k
iter_seek_ge k=l
iter_seek_ge k=m
iter_seek_ge k=n
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_seek_ge: {b-c}/[3.000000000,0=/<empty>] !
iter_seek_ge: {c-d}/[3.000000000,0=/<empty>] !
iter_seek_ge: "d"/4.000000000,0=/BYTES/d4 !
iter_seek_ge: "e"/3.000000000,0=/BYTES/e3
iter_seek_ge: {f-g}/[3.000000000,0=/<empty>] !
iter_seek_ge: {g-h}/[3.000000000,0=/<empty>] !
iter_seek_ge: "h"/4.000000000,0=/<empty> !
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: .

# Seek to every point location above and below the filtered time span.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=1 endTs=4 intents=emit
iter_seek_ge k=a ts=5
iter_seek_ge k=b ts=5
iter_seek_ge k=c ts=5
iter_seek_ge k=d ts=5
iter_seek_ge k=e ts=5
iter_seek_ge k=f ts=5
iter_seek_ge k=g ts=5
iter_seek_ge k=h ts=5
iter_seek_ge k=i ts=5
iter_seek_ge k=j ts=5
iter_seek_ge k=k ts=5
iter_seek_ge k=l ts=5
iter_seek_ge k=m ts=5
iter_seek_ge k=n ts=5
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_seek_ge: {b-c}/[3.000000000,0=/<empty>] !
iter_seek_ge: {c-d}/[3.000000000,0=/<empty>] !
iter_seek_ge: "d"/4.000000000,0=/BYTES/d4 !
iter_seek_ge: "e"/3.000000000,0=/BYTES/e3
iter_seek_ge: {f-g}/[3.000000000,0=/<empty>] !
iter_seek_ge: {g-h}/[3.000000000,0=/<empty>] !
iter_seek_ge: "h"/4.000000000,0=/<empty> !
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_seek_ge: .

run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=3 endTs=6 intents=emit
iter_seek_ge k=a ts=3
iter_seek_ge k=b ts=3
iter_seek_ge k=c ts=3
iter_seek_ge k=d ts=3
iter_seek_ge k=e ts=3
iter_seek_ge k=f ts=3
iter_seek_ge k=g ts=3
iter_seek_ge k=h ts=3
iter_seek_ge k=i ts=3
iter_seek_ge k=j ts=3
iter_seek_ge k=k ts=3
iter_seek_ge k=l ts=3
iter_seek_ge k=m ts=3
iter_seek_ge k=n ts=3
----
iter_seek_ge: "b"/4.000000000,0=/<empty>
iter_seek_ge: {c-d}/[5.000000000,0=/<empty>] !
iter_seek_ge: {c-d}/[5.000000000,0=/<empty>]
iter_seek_ge: {d-f}/[5.000000000,0=/<empty>] !
iter_seek_ge: {d-f}/[5.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty>] !
iter_seek_ge: "h"/4.000000000,0=/<empty> !
iter_seek_ge: "k"/5.000000000,0=/BYTES/k5
iter_seek_ge: "k"/5.000000000,0=/BYTES/k5
iter_seek_ge: "k"/5.000000000,0=/BYTES/k5
iter_seek_ge: .
iter_seek_ge: .
iter_seek_ge: .
iter_seek_ge: .

# Seek directly to a hidden point, and then iterate forward. In particular, this
# tests that the bare range key is emitted first.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=f ts=6
iter_next
----
iter_seek_ge: {f-g}/[3.000000000,0=/<empty>] !
iter_next: "f"/4.000000000,0=/BYTES/f4 {f-g}/[3.000000000,0=/<empty>]

# Seeking twice to within the same range key must emit the bare range key both
# times.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=1 endTs=4 intents=emit
iter_seek_ge k=d
iter_seek_ge k=d ts=2
iter_seek_ge k=e
----
iter_seek_ge: "d"/4.000000000,0=/BYTES/d4
iter_seek_ge: "e"/3.000000000,0=/BYTES/e3
iter_seek_ge: "e"/3.000000000,0=/BYTES/e3

# Test intent error handling.
run error
iter_new_incremental types=pointsAndRanges k=a end=z intents=error
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: err=conflicting locks on "a"
iter_scan: err=conflicting locks on "a"
error: (*kvpb.LockConflictError:) conflicting locks on "a"

run error
iter_new_incremental types=pointsAndRanges k=a end=z intents=aggregate maxLockConflicts=3
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: err=conflicting locks on "a", "d", "j"
error: (*kvpb.LockConflictError:) conflicting locks on "a", "d", "j"

run error
iter_new_incremental types=pointsAndRanges k=a end=z intents=aggregate
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/7.000000000,0=/BYTES/o7 !
iter_scan: .
error: (*kvpb.LockConflictError:) conflicting locks on "a", "d", "j", "l", "m", "o"

run error
iter_new_incremental types=pointsAndRanges k=a end=z endTs=7 intents=aggregate
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "o"/7.000000000,0=/BYTES/o7 !
iter_scan: .
error: (*kvpb.LockConflictError:) conflicting locks on "a", "j", "l", "o"

# Each intent here has the size of 3 bytes.
run error
iter_new_incremental types=pointsAndRanges k=a end=z intents=aggregate targetLockConflictBytes=6
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: err=conflicting locks on "a", "d"
error: (*kvpb.LockConflictError:) conflicting locks on "a", "d"

run ok
iter_new_incremental types=pointsAndRanges k=a end=z endTs=6 intents=aggregate
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges k=e end=j intents=aggregate
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {e-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {e-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "e"/3.000000000,0=/BYTES/e3 {e-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-j}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-j}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-j}/[1.000000000,0=/<empty>]
iter_scan: .

# Test that intents outside of time bounds won't error, and will be skipped
# instead. Within time bounds will error.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=error
iter_seek_ge k=c
iter_next_ignoring_time
----
iter_seek_ge: {c-d}/[3.000000000,0=/<empty>] !
iter_next_ignoring_time: "d"/8.000000000,0=/BYTES/d8 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !

run error
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=10 intents=error
iter_seek_ge k=c
iter_next_ignoring_time
----
iter_seek_ge: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_next_ignoring_time: err=conflicting locks on "d"
error: (*kvpb.LockConflictError:) conflicting locks on "d"

run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=error maxLockConflicts=100
iter_seek_ge k=c
iter_next_key_ignoring_time
----
iter_seek_ge: {c-d}/[3.000000000,0=/<empty>] !
iter_next_key_ignoring_time: "d"/8.000000000,0=/BYTES/d8 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !

run error
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=10 intents=error
iter_seek_ge k=c
iter_next_key_ignoring_time
----
iter_seek_ge: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_next_key_ignoring_time: err=conflicting locks on "d"
error: (*kvpb.LockConflictError:) conflicting locks on "d"

# Ignoring intents will filter them out, but still emit provisional values if
# the caller hasn't resolved the intents first.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=ignore
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/7.000000000,0=/BYTES/o7 !
iter_scan: .

run ok
iter_new_incremental types=pointsOnly k=a end=z startTs=4 endTs=7 intents=ignore
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/7.000000000,0=/BYTES/a7
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "f"/6.000000000,0=/BYTES/f6
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

# rangesOnly doesn't care about intents.
run ok
iter_new_incremental types=rangesOnly k=a end=z intents=error
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

# Test NextIgnoringTime().
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=a
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_next_ignoring_time: "a"/2.000000000,0=/BYTES/a2 (+{a-b}/[1.000000000,0=/<empty>])
iter_next_ignoring_time: {b-c}/[3.000000000,0=/<empty>] (+{b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty>] (+{b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: {c-d}/[3.000000000,0=/<empty>] (+{c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "d"/8.000000000,0=/BYTES/d8 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: "d"/4.000000000,0=/BYTES/d4 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: "e"/3.000000000,0=/BYTES/e3 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "f"/6.000000000,0=/BYTES/f6 {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: "f"/4.000000000,0=/BYTES/f4 {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: "f"/2.000000000,0=/BYTES/f2 {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: {g-h}/[3.000000000,0=/<empty>] (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty>] (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty>] (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: (+{h-k}/[1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "h"/4.000000000,0=/<empty> (+{h-k}/[1.000000000,0=/<empty>])
iter_next_ignoring_time: "h"/3.000000000,0=/BYTES/h3 (+{h-k}/[1.000000000,0=/<empty>])
iter_next_ignoring_time: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true (+{h-k}/[1.000000000,0=/<empty>])
iter_next_ignoring_time: "j"/7.000000000,0=/BYTES/j7 (+{h-k}/[1.000000000,0=/<empty>])
iter_next_ignoring_time: "k"/5.000000000,0=/BYTES/k5
iter_next_ignoring_time: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_next_ignoring_time: "l"/7.000000000,0=/BYTES/l7
iter_next_ignoring_time: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_next_ignoring_time: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_next_ignoring_time: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_next_ignoring_time: "o"/7.000000000,0=/BYTES/o7

# Switch from ignoring to respecting time at point key.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=a
iter_next_ignoring_time
iter_next
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_next_ignoring_time: "a"/2.000000000,0=/BYTES/a2 (+{a-b}/[1.000000000,0=/<empty>])
iter_next: {b-c}/[3.000000000,0=/<empty>] !

# Switch from ignoring to respecting time at range key.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=a
iter_next
iter_next
iter_next_ignoring_time
iter_next
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_next: {b-c}/[3.000000000,0=/<empty>] !
iter_next: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty>]
iter_next_ignoring_time: {c-d}/[3.000000000,0=/<empty>] (+{c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next: "d"/4.000000000,0=/BYTES/d4 !

# Switch between ignoring and respecting time with NextIgnoringTime across span.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=a
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
iter_next_ignoring_time
iter_next
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_next: {b-c}/[3.000000000,0=/<empty>] !
iter_next_ignoring_time: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty>] (+{b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next: {c-d}/[3.000000000,0=/<empty>] !
iter_next_ignoring_time: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next: "d"/4.000000000,0=/BYTES/d4
iter_next_ignoring_time: "e"/3.000000000,0=/BYTES/e3 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next: {f-g}/[3.000000000,0=/<empty>] !
iter_next_ignoring_time: "f"/6.000000000,0=/BYTES/f6 {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next: "f"/4.000000000,0=/BYTES/f4 {f-g}/[3.000000000,0=/<empty>]
iter_next_ignoring_time: "f"/2.000000000,0=/BYTES/f2 {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next: {g-h}/[3.000000000,0=/<empty>] !
iter_next_ignoring_time: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty>] (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next: "h"/4.000000000,0=/<empty> !
iter_next_ignoring_time: "h"/3.000000000,0=/BYTES/h3 (+{h-k}/[1.000000000,0=/<empty>])
iter_next: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_next_ignoring_time: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_next: .

# NextIgnoringTime with only range keys.
run ok
iter_new_incremental types=rangesOnly k=a end=z startTs=4 endTs=5 intents=emit
iter_seek_ge k=f
iter_next_ignoring_time
----
iter_seek_ge: {f-g}/[5.000000000,0=/<empty>] !
iter_next_ignoring_time: (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !

# Test NextKeyIgnoringTime().
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=a
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
iter_next_key_ignoring_time
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_next_key_ignoring_time: {b-c}/[3.000000000,0=/<empty>] (+{b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_key_ignoring_time: {c-d}/[3.000000000,0=/<empty>] (+{c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_key_ignoring_time: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_key_ignoring_time: "e"/3.000000000,0=/BYTES/e3 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_key_ignoring_time: {f-g}/[3.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_key_ignoring_time: {g-h}/[3.000000000,0=/<empty>] (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_key_ignoring_time: (+{h-k}/[1.000000000,0=/<empty>] !) !
iter_next_key_ignoring_time: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true (+{h-k}/[1.000000000,0=/<empty>])
iter_next_key_ignoring_time: "k"/5.000000000,0=/BYTES/k5
iter_next_key_ignoring_time: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_next_key_ignoring_time: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_next_key_ignoring_time: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_next_key_ignoring_time: .

# Switch between ignoring and respecting time with NextKeyIgnoringTime across span.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z startTs=2 endTs=4 intents=emit
iter_seek_ge k=a
iter_next
iter_next_key_ignoring_time
iter_next
iter_next_key_ignoring_time
iter_next
iter_next_key_ignoring_time
iter_next
iter_next_key_ignoring_time
iter_next
iter_next_key_ignoring_time
iter_next
iter_next_key_ignoring_time
iter_next
----
iter_seek_ge: "a"/4.000000000,0=/<empty>
iter_next: {b-c}/[3.000000000,0=/<empty>] !
iter_next_key_ignoring_time: {c-d}/[3.000000000,0=/<empty>] (+{c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next: "d"/4.000000000,0=/BYTES/d4 !
iter_next_key_ignoring_time: "e"/3.000000000,0=/BYTES/e3 (+{d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next: {f-g}/[3.000000000,0=/<empty>] !
iter_next_key_ignoring_time: {g-h}/[3.000000000,0=/<empty>] (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty>]
iter_next_key_ignoring_time: (+{h-k}/[1.000000000,0=/<empty>] !) !
iter_next: "h"/4.000000000,0=/<empty>
iter_next_key_ignoring_time: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true (+{h-k}/[1.000000000,0=/<empty>])
iter_next: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_next_key_ignoring_time: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_next: .

# NextKeyIgnoringTime with only range keys.
run ok
iter_new_incremental types=rangesOnly k=a end=z startTs=4 endTs=5 intents=emit
iter_seek_ge k=f
iter_next_key_ignoring_time
----
iter_seek_ge: {f-g}/[5.000000000,0=/<empty>] !
iter_next_key_ignoring_time: (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !

# Try some scans, bounded and unbounded, with only point keys.
run ok
iter_new_incremental types=pointsOnly k=a end=z endTs=8 intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "a"/7.000000000,0=/BYTES/a7
iter_scan: "a"/4.000000000,0=/<empty>
iter_scan: "a"/2.000000000,0=/BYTES/a2
iter_scan: "b"/4.000000000,0=/<empty>
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "d"/8.000000000,0=/BYTES/d8
iter_scan: "d"/4.000000000,0=/BYTES/d4
iter_scan: "e"/3.000000000,0=/BYTES/e3
iter_scan: "f"/6.000000000,0=/BYTES/f6
iter_scan: "f"/4.000000000,0=/BYTES/f4
iter_scan: "f"/2.000000000,0=/BYTES/f2
iter_scan: "g"/4.000000000,0=/BYTES/g4
iter_scan: "g"/2.000000000,0=/BYTES/g2
iter_scan: "h"/4.000000000,0=/<empty>
iter_scan: "h"/3.000000000,0=/BYTES/h3
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "j"/7.000000000,0=/BYTES/j7
iter_scan: "k"/5.000000000,0=/BYTES/k5
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "m"/8.000000000,0=/BYTES/m8
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsOnly k=bbb end=fff startTs=2 endTs=5 intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "d"/4.000000000,0=/BYTES/d4
iter_scan: "d"/4.000000000,0=/BYTES/d4
iter_scan: "e"/3.000000000,0=/BYTES/e3
iter_scan: "f"/4.000000000,0=/BYTES/f4
iter_scan: .

run ok
iter_new_incremental types=pointsOnly k=a end=z endTs=8 intents=emit
iter_seek_ge k=a
iter_seek_ge k=b
iter_seek_ge k=c
iter_seek_ge k=d
iter_seek_ge k=e
iter_seek_ge k=f
iter_seek_ge k=g
iter_seek_ge k=h
iter_seek_ge k=i
iter_seek_ge k=j
iter_seek_ge k=k
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_seek_ge: "b"/4.000000000,0=/<empty>
iter_seek_ge: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_seek_ge: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_seek_ge: "e"/3.000000000,0=/BYTES/e3
iter_seek_ge: "f"/6.000000000,0=/BYTES/f6
iter_seek_ge: "g"/4.000000000,0=/BYTES/g4
iter_seek_ge: "h"/4.000000000,0=/<empty>
iter_seek_ge: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_seek_ge: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_seek_ge: "k"/5.000000000,0=/BYTES/k5

run ok
iter_new_incremental types=pointsOnly k=a end=z endTs=8 intents=emit
iter_seek_ge k=f ts=7
iter_seek_ge k=f ts=6
iter_seek_ge k=f ts=5
iter_seek_ge k=f ts=4
iter_seek_ge k=f ts=3
iter_seek_ge k=f ts=2
iter_seek_ge k=f ts=1
----
iter_seek_ge: "f"/6.000000000,0=/BYTES/f6
iter_seek_ge: "f"/6.000000000,0=/BYTES/f6
iter_seek_ge: "f"/4.000000000,0=/BYTES/f4
iter_seek_ge: "f"/4.000000000,0=/BYTES/f4
iter_seek_ge: "f"/2.000000000,0=/BYTES/f2
iter_seek_ge: "f"/2.000000000,0=/BYTES/f2
iter_seek_ge: "g"/4.000000000,0=/BYTES/g4

# Try some scans, bounded and unbounded, with only range keys.
run ok
iter_new_incremental types=rangesOnly k=a end=z endTs=8 intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {a-b}/[1.000000000,0=/<empty>] !
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=rangesOnly k=bbb end=fff startTs=2 endTs=5 intents=emit
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: {bbb-c}/[3.000000000,0=/<empty>] !
iter_scan: {bbb-c}/[3.000000000,0=/<empty>] !
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: {d-f}/[5.000000000,0=/<empty>] !
iter_scan: f{-ff}/[5.000000000,0=/<empty> 3.000000000,0=/<empty>] !
iter_scan: .

run ok
iter_new_incremental types=rangesOnly k=a end=z endTs=8 intents=emit
iter_seek_ge k=a
iter_seek_ge k=b
iter_seek_ge k=c
iter_seek_ge k=d
iter_seek_ge k=e
iter_seek_ge k=f
iter_seek_ge k=g
iter_seek_ge k=h
iter_seek_ge k=i
iter_seek_ge k=j
iter_seek_ge k=k
----
iter_seek_ge: {a-b}/[1.000000000,0=/<empty>] !
iter_seek_ge: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_seek_ge: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_seek_ge: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_seek_ge: {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_seek_ge: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_seek_ge: {h-k}/[1.000000000,0=/<empty>] !
iter_seek_ge: {h-k}/[1.000000000,0=/<empty>]
iter_seek_ge: {h-k}/[1.000000000,0=/<empty>]
iter_seek_ge: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !

run ok
iter_new_incremental types=rangesOnly k=a end=z endTs=8 intents=emit
iter_seek_ge k=f ts=7
iter_seek_ge k=f ts=6
iter_seek_ge k=f ts=5
iter_seek_ge k=f ts=4
iter_seek_ge k=f ts=3
iter_seek_ge k=f ts=2
iter_seek_ge k=f ts=1
----
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_seek_ge: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]

# Range key masking at increasing timestamps.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit maskBelow=1
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit maskBelow=2
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/2.000000000,0=/BYTES/f2 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "g"/2.000000000,0=/BYTES/g2 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit maskBelow=3
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit maskBelow=4
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "d"/4.000000000,0=/BYTES/d4 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "e"/3.000000000,0=/BYTES/e3 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: "f"/4.000000000,0=/BYTES/f4 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit maskBelow=5
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit maskBelow=6
iter_seek_ge k=a
iter_scan
----
iter_seek_ge: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {a-b}/[1.000000000,0=/<empty>] !
iter_scan: "a"/7.000000000,0=/BYTES/a7 {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/4.000000000,0=/<empty> {a-b}/[1.000000000,0=/<empty>]
iter_scan: "a"/2.000000000,0=/BYTES/a2 {a-b}/[1.000000000,0=/<empty>]
iter_scan: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "b"/4.000000000,0=/<empty> {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {c-d}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "d"/8.000000000,0=/BYTES/d8 {d-f}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !
iter_scan: "g"/4.000000000,0=/BYTES/g4 {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
iter_scan: {h-k}/[1.000000000,0=/<empty>] !
iter_scan: "h"/4.000000000,0=/<empty> {h-k}/[1.000000000,0=/<empty>]
iter_scan: "h"/3.000000000,0=/BYTES/h3 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {h-k}/[1.000000000,0=/<empty>]
iter_scan: "j"/7.000000000,0=/BYTES/j7 {h-k}/[1.000000000,0=/<empty>]
iter_scan: "k"/5.000000000,0=/BYTES/k5 !
iter_scan: "l"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true
iter_scan: "l"/7.000000000,0=/BYTES/l7
iter_scan: "m"/0,0=txn={id=00000002 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=8.000000000,0 min=0,0 seq=0} ts=8.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>] !
iter_scan: "m"/8.000000000,0=/BYTES/m8 {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
iter_scan: "o"/0,0=txn={id=00000001 key=/Min iso=Serializable pri=0.00000000 epo=0 ts=7.000000000,0 min=0,0 seq=0} ts=7.000000000,0 del=false klen=12 vlen=7 mergeTs=<nil> txnDidNotUpdateMeta=true !
iter_scan: "o"/7.000000000,0=/BYTES/o7
iter_scan: .

# Range key masking also affects NextIgnoringTime.
run ok
iter_new_incremental types=pointsAndRanges k=a end=z intents=emit startTs=3 maskBelow=5
iter_seek_ge k=f
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
iter_next_ignoring_time
----
iter_seek_ge: {f-g}/[5.000000000,0=/<empty>] !
iter_next_ignoring_time: "f"/6.000000000,0=/BYTES/f6 {f-g}/[5.000000000,0=/<empty>] (+{f-g}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>] !) !
iter_next_ignoring_time: "g"/4.000000000,0=/BYTES/g4 (+{g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>])
iter_next_ignoring_time: (+{h-k}/[1.000000000,0=/<empty>] !)
