# Tests MVCCClearTimeRange.
#
# All tests set up the following dataset, where x is tombstone, o-o is range
# tombstone, [] is intent. The dataset is recreated for every test.
#
#  T
#  6                      f6
#  5          o-------------------o           k5
#  4  x   x       d4          x      x
#  3      o-------o   e3  x   o------oi3              o---o
#  2  a2          d2      f2  g2
#  1  o---------------------------------------o
#     a   b   c   d   e   f   g   h   i   j   k   l   m   n

# A clear without a time span should error, as should a clear with a target time
# at or above the end time.
run stats error
clear_time_range k=a end=z
----
>> clear_time_range k=a end=z
stats: no change
>> at end:
<no data>
stats: 
error: (*withstack.withStack:) end time is required

run stats error
clear_time_range k=a end=z ts=5 targetTs=5
----
>> clear_time_range k=a end=z ts=5 targetTs=5
stats: no change
>> at end:
<no data>
stats: 
error: (*withstack.withStack:) end time 5.000000000,0 must be above start time 5.000000000,0

run stats error
clear_time_range k=a end=z ts=5 targetTs=6
----
>> clear_time_range k=a end=z ts=5 targetTs=6
stats: no change
>> at end:
<no data>
stats: 
error: (*withstack.withStack:) end time 5.000000000,0 must be above start time 6.000000000,0

# Clear the entire span.
run ok
del_range_ts k=a end=k ts=1
put k=a ts=2 v=a2
del k=a ts=4
put k=d ts=2 v=d2
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
del k=f ts=3
put k=g ts=2 v=g2
del_range_ts k=g end=i ts=3
del k=g ts=4
del_range_ts k=c end=h ts=5
put k=f ts=6 v=f6
put k=i ts=3 v=i3
del k=i ts=4
put k=k ts=5 v=k5
del_range_ts k=m end=n ts=3 localTs=2
----
del: "a": found key true
del: "b": found key false
del: "f": found key true
del: "g": found key false
del: "i": found key true
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5

run stats ok
clear_time_range k=a end=z ts=7 targetTs=0
----
>> clear_time_range k=a end=z ts=7 targetTs=0
stats: key_count=-8 key_bytes=-184 val_count=-14 val_bytes=-63 range_key_count=-8 range_key_bytes=-167 range_val_count=-15 range_val_bytes=-13 live_count=-2 live_bytes=-42 gc_bytes_age=-37212
>> at end:
<no data>
stats: 

# Clear individual timestamps 7-1.
run ok
del_range_ts k=a end=k ts=1
put k=a ts=2 v=a2
del k=a ts=4
put k=d ts=2 v=d2
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
del k=f ts=3
put k=g ts=2 v=g2
del_range_ts k=g end=i ts=3
del k=g ts=4
del_range_ts k=c end=h ts=5
put k=f ts=6 v=f6
put k=i ts=3 v=i3
del k=i ts=4
put k=k ts=5 v=k5
del_range_ts k=m end=n ts=3 localTs=2
----
del: "a": found key true
del: "b": found key false
del: "f": found key true
del: "g": found key false
del: "i": found key true
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5

run stats ok
clear_time_range k=a end=z ts=7 targetTs=6
----
>> clear_time_range k=a end=z ts=7 targetTs=6
stats: no change
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=8 key_bytes=184 val_count=14 val_bytes=63 range_key_count=8 range_key_bytes=167 range_val_count=15 range_val_bytes=13 live_count=2 live_bytes=42 gc_bytes_age=37212

run stats ok
clear_time_range k=a end=z ts=6 targetTs=5
----
>> clear_time_range k=a end=z ts=6 targetTs=5
stats: key_bytes=-12 val_count=-1 val_bytes=-7 live_count=-1 live_bytes=-21 gc_bytes_age=+194
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=8 key_bytes=172 val_count=13 val_bytes=56 range_key_count=8 range_key_bytes=167 range_val_count=15 range_val_bytes=13 live_count=1 live_bytes=21 gc_bytes_age=37406

run stats ok
clear_time_range k=a end=z ts=5 targetTs=4
----
>> clear_time_range k=a end=z ts=5 targetTs=4
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_count=-2 range_key_bytes=-71 range_val_count=-7 live_count=+1 live_bytes=+21 gc_bytes_age=-10827
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=7 key_bytes=158 val_count=12 val_bytes=49 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=2 live_bytes=42 gc_bytes_age=26579

run stats ok
clear_time_range k=a end=z ts=4 targetTs=3
----
>> clear_time_range k=a end=z ts=4 targetTs=3
stats: key_count=-1 key_bytes=-62 val_count=-5 val_bytes=-7 live_count=+2 live_bytes=+42 gc_bytes_age=-10654
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=15925

run stats ok
clear_time_range k=a end=z ts=3 targetTs=2
----
>> clear_time_range k=a end=z ts=3 targetTs=2
stats: key_count=-2 key_bytes=-40 val_count=-3 val_bytes=-14 range_key_count=-5 range_key_bytes=-83 range_val_count=-7 range_val_bytes=-13 gc_bytes_age=-14638
>> at end:
rangekey: {a-k}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
stats: key_count=4 key_bytes=56 val_count=4 val_bytes=28 range_key_count=1 range_key_bytes=13 range_val_count=1 live_count=4 live_bytes=84 gc_bytes_age=1287

run stats ok
clear_time_range k=a end=z ts=2 targetTs=1
----
>> clear_time_range k=a end=z ts=2 targetTs=1
stats: key_count=-4 key_bytes=-56 val_count=-4 val_bytes=-28 live_count=-4 live_bytes=-84
>> at end:
rangekey: {a-k}/[1.000000000,0=/<empty>]
stats: range_key_count=1 range_key_bytes=13 range_val_count=1 gc_bytes_age=1287

run stats ok
clear_time_range k=a end=z ts=1 targetTs=0
----
>> clear_time_range k=a end=z ts=1 targetTs=0
stats: range_key_count=-1 range_key_bytes=-13 range_val_count=-1 gc_bytes_age=-1287
>> at end:
<no data>
stats: 

# Clear individual keys a-n for times 3-6.
run ok
del_range_ts k=a end=k ts=1
put k=a ts=2 v=a2
del k=a ts=4
put k=d ts=2 v=d2
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
del k=f ts=3
put k=g ts=2 v=g2
del_range_ts k=g end=i ts=3
del k=g ts=4
del_range_ts k=c end=h ts=5
put k=f ts=6 v=f6
put k=i ts=3 v=i3
del k=i ts=4
put k=k ts=5 v=k5
del_range_ts k=m end=n ts=3 localTs=2
----
del: "a": found key true
del: "b": found key false
del: "f": found key true
del: "g": found key false
del: "i": found key true
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5

run stats ok
clear_time_range k=a end=b ts=6 targetTs=3
----
>> clear_time_range k=a end=b ts=6 targetTs=3
stats: key_bytes=-12 val_count=-1 live_count=+1 live_bytes=+21 gc_bytes_age=-3168
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=8 key_bytes=172 val_count=13 val_bytes=63 range_key_count=8 range_key_bytes=167 range_val_count=15 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=34044

run stats ok
clear_time_range k=b end=c ts=6 targetTs=3
----
>> clear_time_range k=b end=c ts=6 targetTs=3
stats: key_count=-1 key_bytes=-14 val_count=-1 gc_bytes_age=-1344
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=158 val_count=12 val_bytes=63 range_key_count=8 range_key_bytes=167 range_val_count=15 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=32700

run stats ok
clear_time_range k=c end=d ts=6 targetTs=3
----
>> clear_time_range k=c end=d ts=6 targetTs=3
stats: range_key_count=-1 range_key_bytes=-31 range_val_count=-3 gc_bytes_age=-2999
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=158 val_count=12 val_bytes=63 range_key_count=7 range_key_bytes=136 range_val_count=12 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=29701

run stats ok
clear_time_range k=d end=e ts=6 targetTs=3
----
>> clear_time_range k=d end=e ts=6 targetTs=3
stats: key_bytes=-12 val_count=-1 val_bytes=-7 range_key_count=+1 range_key_bytes=+13 range_val_count=+1 live_count=+1 live_bytes=+21 gc_bytes_age=-2532
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-e}/[1.000000000,0=/<empty>]
rangekey: {e-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=146 val_count=11 val_bytes=56 range_key_count=8 range_key_bytes=149 range_val_count=13 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=27169

run stats ok
clear_time_range k=e end=f ts=6 targetTs=3
----
>> clear_time_range k=e end=f ts=6 targetTs=3
stats: live_count=+1 live_bytes=+21 gc_bytes_age=-1995
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-f}/[1.000000000,0=/<empty>]
rangekey: {f-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=146 val_count=11 val_bytes=56 range_key_count=8 range_key_bytes=149 range_val_count=13 range_val_bytes=13 live_count=5 live_bytes=105 gc_bytes_age=25174

run stats ok
clear_time_range k=f end=g ts=6 targetTs=3
----
>> clear_time_range k=f end=g ts=6 targetTs=3
stats: key_bytes=-12 val_count=-1 val_bytes=-7 range_key_count=-1 range_key_bytes=-22 range_val_count=-2 live_count=-1 live_bytes=-21 gc_bytes_age=-1932
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=134 val_count=10 val_bytes=49 range_key_count=7 range_key_bytes=127 range_val_count=11 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=23242

run stats ok
clear_time_range k=g end=h ts=6 targetTs=3
----
>> clear_time_range k=g end=h ts=6 targetTs=3
stats: key_bytes=-12 val_count=-1 range_key_count=-1 range_key_bytes=-31 range_val_count=-3 gc_bytes_age=-4149
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=122 val_count=9 val_bytes=49 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=19093

run stats ok
clear_time_range k=h end=i ts=6 targetTs=3
----
>> clear_time_range k=h end=i ts=6 targetTs=3
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=122 val_count=9 val_bytes=49 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=19093

run stats ok
clear_time_range k=i end=j ts=6 targetTs=3
----
>> clear_time_range k=i end=j ts=6 targetTs=3
stats: key_bytes=-12 val_count=-1 live_count=+1 live_bytes=+21 gc_bytes_age=-3168
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=110 val_count=8 val_bytes=49 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=5 live_bytes=105 gc_bytes_age=15925

run stats ok
clear_time_range k=j end=k ts=6 targetTs=3
----
>> clear_time_range k=j end=k ts=6 targetTs=3
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=110 val_count=8 val_bytes=49 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=5 live_bytes=105 gc_bytes_age=15925

run stats ok
clear_time_range k=k end=l ts=6 targetTs=3
----
>> clear_time_range k=k end=l ts=6 targetTs=3
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 live_count=-1 live_bytes=-21
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=15925

run stats ok
clear_time_range k=l end=m ts=6 targetTs=3
----
>> clear_time_range k=l end=m ts=6 targetTs=3
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=15925

run stats ok
clear_time_range k=m end=n ts=6 targetTs=3
----
>> clear_time_range k=m end=n ts=6 targetTs=3
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=6 range_key_bytes=96 range_val_count=8 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=15925

# Clear individual keys n-a for times 0-3.
run stats ok
clear_time_range k=m end=n ts=3 targetTs=0
----
>> clear_time_range k=m end=n ts=3 targetTs=0
stats: range_key_count=-1 range_key_bytes=-13 range_val_count=-1 range_val_bytes=-13 gc_bytes_age=-2522
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=5 range_key_bytes=83 range_val_count=7 live_count=4 live_bytes=84 gc_bytes_age=13403

run stats ok
clear_time_range k=l end=m ts=3 targetTs=0
----
>> clear_time_range k=l end=m ts=3 targetTs=0
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=5 range_key_bytes=83 range_val_count=7 live_count=4 live_bytes=84 gc_bytes_age=13403

run stats ok
clear_time_range k=k end=l ts=3 targetTs=0
----
>> clear_time_range k=k end=l ts=3 targetTs=0
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=5 range_key_bytes=83 range_val_count=7 live_count=4 live_bytes=84 gc_bytes_age=13403

run stats ok
clear_time_range k=j end=k ts=3 targetTs=0
----
>> clear_time_range k=j end=k ts=3 targetTs=0
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-j}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=5 range_key_bytes=83 range_val_count=7 live_count=4 live_bytes=84 gc_bytes_age=13403

run stats ok
clear_time_range k=i end=j ts=3 targetTs=0
----
>> clear_time_range k=i end=j ts=3 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_count=-1 range_key_bytes=-13 range_val_count=-1 live_count=-1 live_bytes=-21 gc_bytes_age=-1287
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
stats: key_count=5 key_bytes=82 val_count=6 val_bytes=35 range_key_count=4 range_key_bytes=70 range_val_count=6 live_count=3 live_bytes=63 gc_bytes_age=12116

run stats ok
clear_time_range k=h end=i ts=3 targetTs=0
----
>> clear_time_range k=h end=i ts=3 targetTs=0
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
rangekey: {g-h}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
stats: key_count=5 key_bytes=82 val_count=6 val_bytes=35 range_key_count=4 range_key_bytes=70 range_val_count=6 live_count=3 live_bytes=63 gc_bytes_age=12116

run stats ok
clear_time_range k=g end=h ts=3 targetTs=0
----
>> clear_time_range k=g end=h ts=3 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_count=-1 range_key_bytes=-22 range_val_count=-2 gc_bytes_age=-4189
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-g}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
stats: key_count=4 key_bytes=68 val_count=5 val_bytes=28 range_key_count=3 range_key_bytes=48 range_val_count=4 live_count=3 live_bytes=63 gc_bytes_age=7927

run stats ok
clear_time_range k=f end=g ts=3 targetTs=0
----
>> clear_time_range k=f end=g ts=3 targetTs=0
stats: key_count=-1 key_bytes=-26 val_count=-2 val_bytes=-7 gc_bytes_age=-3201
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-f}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
stats: key_count=3 key_bytes=42 val_count=3 val_bytes=21 range_key_count=3 range_key_bytes=48 range_val_count=4 live_count=3 live_bytes=63 gc_bytes_age=4726

run stats ok
clear_time_range k=e end=f ts=3 targetTs=0
----
>> clear_time_range k=e end=f ts=3 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 live_count=-1 live_bytes=-21
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-e}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
stats: key_count=2 key_bytes=28 val_count=2 val_bytes=14 range_key_count=3 range_key_bytes=48 range_val_count=4 live_count=2 live_bytes=42 gc_bytes_age=4726

run stats ok
clear_time_range k=d end=e ts=3 targetTs=0
----
>> clear_time_range k=d end=e ts=3 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_count=-1 range_key_bytes=-13 range_val_count=-1 live_count=-1 live_bytes=-21 gc_bytes_age=-1287
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
stats: key_count=1 key_bytes=14 val_count=1 val_bytes=7 range_key_count=2 range_key_bytes=35 range_val_count=3 live_count=1 live_bytes=21 gc_bytes_age=3439

run stats ok
clear_time_range k=c end=d ts=3 targetTs=0
----
>> clear_time_range k=c end=d ts=3 targetTs=0
stats: no change
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
stats: key_count=1 key_bytes=14 val_count=1 val_bytes=7 range_key_count=2 range_key_bytes=35 range_val_count=3 live_count=1 live_bytes=21 gc_bytes_age=3439

run stats ok
clear_time_range k=b end=c ts=3 targetTs=0
----
>> clear_time_range k=b end=c ts=3 targetTs=0
stats: range_key_count=-1 range_key_bytes=-22 range_val_count=-2 gc_bytes_age=-2152
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
stats: key_count=1 key_bytes=14 val_count=1 val_bytes=7 range_key_count=1 range_key_bytes=13 range_val_count=1 live_count=1 live_bytes=21 gc_bytes_age=1287

run stats ok
clear_time_range k=a end=b ts=3 targetTs=0
----
>> clear_time_range k=a end=b ts=3 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_count=-1 range_key_bytes=-13 range_val_count=-1 live_count=-1 live_bytes=-21 gc_bytes_age=-1287
>> at end:
<no data>
stats: 

# Clear a few arbitrary keys and arbitrary timestamps.
run ok
del_range_ts k=a end=k ts=1
put k=a ts=2 v=a2
del k=a ts=4
put k=d ts=2 v=d2
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
del k=f ts=3
put k=g ts=2 v=g2
del_range_ts k=g end=i ts=3
del k=g ts=4
del_range_ts k=c end=h ts=5
put k=f ts=6 v=f6
put k=i ts=3 v=i3
del k=i ts=4
put k=k ts=5 v=k5
del_range_ts k=m end=n ts=3 localTs=2
----
del: "a": found key true
del: "b": found key false
del: "f": found key true
del: "g": found key false
del: "i": found key true
>> at end:
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-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/4.000000000,0 -> /BYTES/d4
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/6.000000000,0 -> /BYTES/f6
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5

run stats ok
clear_time_range k=ccc end=foobar ts=6 targetTs=3
----
>> clear_time_range k=ccc end=foobar ts=6 targetTs=3
stats: key_bytes=-24 val_count=-2 val_bytes=-14 range_key_count=+2 range_key_bytes=+49 range_val_count=+3 live_count=+1 live_bytes=+21 gc_bytes_age=-827
>> at end:
rangekey: {a-b}/[1.000000000,0=/<empty>]
rangekey: {b-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: c{-cc}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {ccc-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-foobar}/[1.000000000,0=/<empty>]
rangekey: {foobar-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "b"/4.000000000,0 -> /<empty>
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=8 key_bytes=160 val_count=12 val_bytes=49 range_key_count=10 range_key_bytes=216 range_val_count=18 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=36385

run stats ok
clear_time_range k=a+ end=b+ ts=4 targetTs=0
----
>> clear_time_range k=a+ end=b+ ts=4 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 range_key_bytes=+2 gc_bytes_age=-1148
>> at end:
rangekey: a{-+}/[1.000000000,0=/<empty>]
rangekey: {b+-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: c{-cc}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {ccc-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-foobar}/[1.000000000,0=/<empty>]
rangekey: {foobar-g}/[5.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {g-h}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {h-i}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {i-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/4.000000000,0 -> /<empty>
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=146 val_count=11 val_bytes=49 range_key_count=10 range_key_bytes=218 range_val_count=18 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=35237

run stats ok
clear_time_range k=foo end=i ts=6 targetTs=2
----
>> clear_time_range k=foo end=i ts=6 targetTs=2
stats: key_bytes=-12 val_count=-1 range_key_count=-4 range_key_bytes=-98 range_val_count=-8 live_count=+1 live_bytes=+21 gc_bytes_age=-12721
>> at end:
rangekey: a{-+}/[1.000000000,0=/<empty>]
rangekey: {b+-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: c{-cc}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {ccc-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-k}/[1.000000000,0=/<empty>]
rangekey: {m-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
data: "k"/5.000000000,0 -> /BYTES/k5
stats: key_count=7 key_bytes=134 val_count=10 val_bytes=49 range_key_count=6 range_key_bytes=120 range_val_count=10 range_val_bytes=13 live_count=4 live_bytes=84 gc_bytes_age=22516

run stats ok
clear_time_range k=k end=mmm ts=6 targetTs=0
----
>> clear_time_range k=k end=mmm ts=6 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_bytes=+2 live_count=-1 live_bytes=-21 gc_bytes_age=+194
>> at end:
rangekey: a{-+}/[1.000000000,0=/<empty>]
rangekey: {b+-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: c{-cc}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {ccc-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-k}/[1.000000000,0=/<empty>]
rangekey: {mmm-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=120 val_count=9 val_bytes=42 range_key_count=6 range_key_bytes=122 range_val_count=10 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=22710

run stats ok
clear_time_range k=c+ end=cc+ ts=6 targetTs=3
----
>> clear_time_range k=c+ end=cc+ ts=6 targetTs=3
stats: range_key_count=+2 range_key_bytes=+59 range_val_count=+5 gc_bytes_age=+5727
>> at end:
rangekey: a{-+}/[1.000000000,0=/<empty>]
rangekey: {b+-c}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: c{-+}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: c{+-c+}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: cc{+-c}/[5.000000000,0=/<empty> 3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {ccc-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-k}/[1.000000000,0=/<empty>]
rangekey: {mmm-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/4.000000000,0 -> /<empty>
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/4.000000000,0 -> /<empty>
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=120 val_count=9 val_bytes=42 range_key_count=8 range_key_bytes=181 range_val_count=15 range_val_bytes=13 live_count=3 live_bytes=63 gc_bytes_age=28437

run stats ok
clear_time_range k=a end=z ts=6 targetTs=3
----
>> clear_time_range k=a end=z ts=6 targetTs=3
stats: key_bytes=-24 val_count=-2 range_key_count=-4 range_key_bytes=-116 range_val_count=-10 live_count=+2 live_bytes=+42 gc_bytes_age=-17598
>> at end:
rangekey: a{-+}/[1.000000000,0=/<empty>]
rangekey: {b+-d}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {d-k}/[1.000000000,0=/<empty>]
rangekey: {mmm-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
data: "d"/2.000000000,0 -> /BYTES/d2
data: "e"/3.000000000,0 -> /BYTES/e3
data: "f"/3.000000000,0 -> /<empty>
data: "f"/2.000000000,0 -> /BYTES/f2
data: "g"/2.000000000,0 -> /BYTES/g2
data: "i"/3.000000000,0 -> /BYTES/i3
stats: key_count=6 key_bytes=96 val_count=7 val_bytes=42 range_key_count=4 range_key_bytes=65 range_val_count=5 range_val_bytes=13 live_count=5 live_bytes=105 gc_bytes_age=10839

run stats ok
clear_time_range k=ccc end=mmm ts=6 targetTs=0
----
>> clear_time_range k=ccc end=mmm ts=6 targetTs=0
stats: key_count=-5 key_bytes=-82 val_count=-6 val_bytes=-35 range_key_count=-1 range_key_bytes=-11 range_val_count=-1 live_count=-4 live_bytes=-84 gc_bytes_age=-4294
>> at end:
rangekey: a{-+}/[1.000000000,0=/<empty>]
rangekey: {b+-ccc}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {mmm-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
data: "a"/2.000000000,0 -> /BYTES/a2
stats: key_count=1 key_bytes=14 val_count=1 val_bytes=7 range_key_count=3 range_key_bytes=54 range_val_count=4 range_val_bytes=13 live_count=1 live_bytes=21 gc_bytes_age=6545

run stats ok
clear_time_range k=a end=a+ ts=6 targetTs=0
----
>> clear_time_range k=a end=a+ ts=6 targetTs=0
stats: key_count=-1 key_bytes=-14 val_count=-1 val_bytes=-7 range_key_count=-1 range_key_bytes=-14 range_val_count=-1 live_count=-1 live_bytes=-21 gc_bytes_age=-1386
>> at end:
rangekey: {b+-ccc}/[3.000000000,0=/<empty> 1.000000000,0=/<empty>]
rangekey: {mmm-n}/[3.000000000,0={localTs=2.000000000,0}/<empty>]
stats: range_key_count=2 range_key_bytes=40 range_val_count=3 range_val_bytes=13 gc_bytes_age=5159

run stats ok
clear_time_range k=b+ end=n ts=3 targetTs=0
----
>> clear_time_range k=b+ end=n ts=3 targetTs=0
stats: range_key_count=-2 range_key_bytes=-40 range_val_count=-3 range_val_bytes=-13 gc_bytes_age=-5159
>> at end:
<no data>
stats: 
