mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-11-10 18:25:17 +00:00
344 lines
6.1 KiB
Plaintext
344 lines
6.1 KiB
Plaintext
build
|
|
a.SET.1:a
|
|
----
|
|
point: [a#1,1-a#1,1]
|
|
seqnums: [1-1]
|
|
|
|
scan
|
|
----
|
|
a#1,1:a
|
|
|
|
scan-range-del
|
|
----
|
|
|
|
scan-range-key
|
|
----
|
|
|
|
build
|
|
a.SET.1:a
|
|
b.DEL.2:
|
|
c.MERGE.3:c
|
|
d.RANGEDEL.4:e
|
|
f.SET.5:f
|
|
g.DEL.6:
|
|
h.MERGE.7:h
|
|
i.RANGEDEL.8:j
|
|
rangekey: j-k:{(#9,RANGEKEYDEL)}
|
|
rangekey: k-l:{(#10,RANGEKEYUNSET,@t5)}
|
|
rangekey: l-m:{(#11,RANGEKEYSET,@t10,foo)}
|
|
----
|
|
point: [a#1,1-h#7,2]
|
|
rangedel: [d#4,15-j#72057594037927935,15]
|
|
rangekey: [j#9,19-m#72057594037927935,21]
|
|
seqnums: [1-11]
|
|
|
|
build
|
|
a.SET.1:a
|
|
b.DEL.2:
|
|
c.MERGE.3:c
|
|
d.RANGEDEL.4:e
|
|
f.SET.5:f
|
|
g.DEL.6:
|
|
h.MERGE.7:h
|
|
i.RANGEDEL.8:j
|
|
----
|
|
point: [a#1,1-h#7,2]
|
|
rangedel: [d#4,15-j#72057594037927935,15]
|
|
seqnums: [1-8]
|
|
|
|
scan
|
|
----
|
|
a#1,1:a
|
|
b#2,0:
|
|
c#3,2:c
|
|
f#5,1:f
|
|
g#6,0:
|
|
h#7,2:h
|
|
|
|
scan-range-del
|
|
----
|
|
d-e:{(#4,RANGEDEL)}
|
|
i-j:{(#8,RANGEDEL)}
|
|
|
|
# 3: a-----------m
|
|
# 2: f------------s
|
|
# 1: j---------------z
|
|
|
|
build
|
|
a.RANGEDEL.3:m
|
|
f.RANGEDEL.2:s
|
|
j.RANGEDEL.1:z
|
|
----
|
|
rangedel: [a#3,15-z#72057594037927935,15]
|
|
seqnums: [1-3]
|
|
|
|
scan
|
|
----
|
|
|
|
scan-range-del
|
|
----
|
|
a-f:{(#3,RANGEDEL)}
|
|
f-j:{(#3,RANGEDEL) (#2,RANGEDEL)}
|
|
j-m:{(#3,RANGEDEL) (#2,RANGEDEL) (#1,RANGEDEL)}
|
|
m-s:{(#2,RANGEDEL) (#1,RANGEDEL)}
|
|
s-z:{(#1,RANGEDEL)}
|
|
|
|
scan-range-key
|
|
----
|
|
|
|
# The range tombstone upper bound is exclusive, so a point operation
|
|
# on that same key will be the actual boundary.
|
|
|
|
build
|
|
a.RANGEDEL.3:b
|
|
b.SET.4:c
|
|
----
|
|
point: [b#4,1-b#4,1]
|
|
rangedel: [a#3,15-b#72057594037927935,15]
|
|
seqnums: [3-4]
|
|
|
|
build
|
|
a.RANGEDEL.3:b
|
|
b.SET.2:c
|
|
----
|
|
point: [b#2,1-b#2,1]
|
|
rangedel: [a#3,15-b#72057594037927935,15]
|
|
seqnums: [2-3]
|
|
|
|
build
|
|
a.RANGEDEL.3:c
|
|
b.SET.2:c
|
|
----
|
|
point: [b#2,1-b#2,1]
|
|
rangedel: [a#3,15-c#72057594037927935,15]
|
|
seqnums: [2-3]
|
|
|
|
# Keys must be added in order.
|
|
|
|
build
|
|
a.SET.1:b
|
|
a.SET.2:c
|
|
----
|
|
pebble: keys must be added in strictly increasing order: a#1,SET, a#2,SET
|
|
|
|
build
|
|
b.SET.1:a
|
|
a.SET.2:b
|
|
----
|
|
pebble: keys must be added in strictly increasing order: b#1,SET, a#2,SET
|
|
|
|
build
|
|
b.RANGEDEL.1:c
|
|
a.RANGEDEL.2:b
|
|
----
|
|
pebble: keys must be added in order: b > a
|
|
|
|
build-raw
|
|
.RANGEDEL.1:b
|
|
----
|
|
rangedel: [#1,15-b#72057594037927935,15]
|
|
seqnums: [1-1]
|
|
|
|
build-raw
|
|
a.RANGEDEL.1:c
|
|
a.RANGEDEL.2:c
|
|
----
|
|
pebble: keys must be added in strictly increasing order: a#1,RANGEDEL, a#2,RANGEDEL
|
|
|
|
build-raw
|
|
a.RANGEDEL.1:c
|
|
b.RANGEDEL.2:d
|
|
----
|
|
pebble: overlapping tombstones must be fragmented: a-c:{(#1,RANGEDEL)} vs b-d:{(#2,RANGEDEL)}
|
|
|
|
build-raw
|
|
a.RANGEDEL.2:c
|
|
a.RANGEDEL.1:d
|
|
----
|
|
pebble: overlapping tombstones must be fragmented: a-c:{(#2,RANGEDEL)} vs a-d:{(#1,RANGEDEL)}
|
|
|
|
build-raw
|
|
a.RANGEDEL.1:c
|
|
c.RANGEDEL.2:d
|
|
----
|
|
rangedel: [a#1,15-d#72057594037927935,15]
|
|
seqnums: [1-2]
|
|
|
|
build-raw
|
|
rangekey: a-b:{(#1,RANGEKEYSET,@t10,foo)}
|
|
rangekey: a-b:{(#2,RANGEKEYSET,@t10,foo)}
|
|
----
|
|
rangekey: [a#2,21-b#72057594037927935,21]
|
|
seqnums: [1-2]
|
|
|
|
build-raw
|
|
rangekey: b-c:{(#2,RANGEKEYSET,@t10,foo)}
|
|
rangekey: a-b:{(#1,RANGEKEYSET,@t10,foo)}
|
|
----
|
|
pebble: spans must be added in order: b > a
|
|
|
|
build-raw
|
|
a.RANGEKEYDEL.1:c
|
|
b.RANGEKEYDEL.2:d
|
|
----
|
|
pebble: overlapping range keys must be fragmented: a#1,RANGEKEYDEL, b#2,RANGEKEYDEL
|
|
|
|
build-raw
|
|
a.RANGEKEYDEL.2:c
|
|
a.RANGEKEYDEL.1:d
|
|
----
|
|
pebble: overlapping range keys must be fragmented: a#2,RANGEKEYDEL, a#1,RANGEKEYDEL
|
|
|
|
build-raw
|
|
rangekey: a-c:{(#1,RANGEKEYSET,@t10,foo)}
|
|
rangekey: c-d:{(#2,RANGEKEYSET,@t10,foo)}
|
|
----
|
|
rangekey: [a#1,21-d#72057594037927935,21]
|
|
seqnums: [1-2]
|
|
|
|
# Range keys may have perfectly aligned spans (including sequence numbers),
|
|
# though the key kinds must be ordered (descending).
|
|
|
|
build-raw
|
|
a.RANGEKEYDEL.1:b
|
|
a.RANGEKEYDEL.1:b
|
|
----
|
|
pebble: range keys starts must be added in increasing order: a#1,RANGEKEYDEL, a#1,RANGEKEYDEL
|
|
|
|
build-raw
|
|
rangekey: a-b:{(#1,RANGEKEYSET,@t10,foo) (#1,RANGEKEYUNSET,@t10) (#1,RANGEKEYDEL)}
|
|
----
|
|
rangekey: [a#1,21-b#72057594037927935,19]
|
|
seqnums: [1-1]
|
|
|
|
# The range-del-v1 format supports unfragmented and unsorted range
|
|
# tombstones.
|
|
|
|
build-raw range-del-v1
|
|
a.RANGEDEL.1:c
|
|
a.RANGEDEL.2:c
|
|
----
|
|
rangedel: [a#2,15-c#72057594037927935,15]
|
|
seqnums: [1-2]
|
|
|
|
scan-range-del
|
|
----
|
|
a-c:{(#2,RANGEDEL) (#1,RANGEDEL)}
|
|
|
|
build-raw range-del-v1
|
|
a.RANGEDEL.1:c
|
|
b.RANGEDEL.2:d
|
|
----
|
|
rangedel: [a#1,15-d#72057594037927935,15]
|
|
seqnums: [1-2]
|
|
|
|
scan-range-del
|
|
----
|
|
a-b:{(#1,RANGEDEL)}
|
|
b-c:{(#2,RANGEDEL) (#1,RANGEDEL)}
|
|
c-d:{(#2,RANGEDEL)}
|
|
|
|
build-raw range-del-v1
|
|
a.RANGEDEL.2:c
|
|
a.RANGEDEL.1:d
|
|
----
|
|
rangedel: [a#2,15-d#72057594037927935,15]
|
|
seqnums: [1-2]
|
|
|
|
scan-range-del
|
|
----
|
|
a-c:{(#2,RANGEDEL) (#1,RANGEDEL)}
|
|
c-d:{(#1,RANGEDEL)}
|
|
|
|
# This matches an early test case, except we're passing overlapping
|
|
# range tombstones to the sstable writer and requiring them to be
|
|
# fragmented at read time.
|
|
|
|
build-raw range-del-v1
|
|
j.RANGEDEL.1:z
|
|
f.RANGEDEL.2:s
|
|
a.RANGEDEL.3:m
|
|
----
|
|
rangedel: [a#3,15-z#72057594037927935,15]
|
|
seqnums: [1-3]
|
|
|
|
scan-range-del
|
|
----
|
|
a-f:{(#3,RANGEDEL)}
|
|
f-j:{(#3,RANGEDEL) (#2,RANGEDEL)}
|
|
j-m:{(#3,RANGEDEL) (#2,RANGEDEL) (#1,RANGEDEL)}
|
|
m-s:{(#2,RANGEDEL) (#1,RANGEDEL)}
|
|
s-z:{(#1,RANGEDEL)}
|
|
|
|
# Setting a very small index-block-size results in a two-level index.
|
|
|
|
build block-size=1 index-block-size=1
|
|
a.SET.1:a
|
|
b.SET.1:b
|
|
c.SET.1:c
|
|
----
|
|
point: [a#1,1-c#1,1]
|
|
seqnums: [1-1]
|
|
|
|
layout
|
|
----
|
|
0 data (22)
|
|
27 data (22)
|
|
54 data (22)
|
|
81 index (22)
|
|
108 index (22)
|
|
135 index (22)
|
|
162 top-index (51)
|
|
218 properties (580)
|
|
803 meta-index (33)
|
|
841 footer (53)
|
|
894 EOF
|
|
|
|
scan
|
|
----
|
|
a#1,1:a
|
|
b#1,1:b
|
|
c#1,1:c
|
|
|
|
# Enabling leveldb format disables the creation of a two-level index
|
|
# (the input data here mirrors the test case above).
|
|
|
|
build leveldb block-size=1 index-block-size=1
|
|
a.SET.1:a
|
|
b.SET.1:b
|
|
c.SET.1:c
|
|
----
|
|
point: [a#1,1-c#1,1]
|
|
seqnums: [1-1]
|
|
|
|
layout
|
|
----
|
|
0 data (21)
|
|
26 data (21)
|
|
52 data (21)
|
|
78 index (47)
|
|
130 properties (678)
|
|
813 meta-index (33)
|
|
851 leveldb-footer (48)
|
|
899 EOF
|
|
|
|
# Range keys, if present, are shown in the layout.
|
|
|
|
build
|
|
rangekey: a-b:{(#3,RANGEKEYSET,@t3,foo)}
|
|
rangekey: b-c:{(#2,RANGEKEYSET,@t2,bar)}
|
|
rangekey: c-d:{(#1,RANGEKEYSET,@t1,baz)}
|
|
----
|
|
rangekey: [a#3,21-d#72057594037927935,21]
|
|
seqnums: [1-3]
|
|
|
|
layout
|
|
----
|
|
0 data (8)
|
|
13 index (21)
|
|
39 range-key (82)
|
|
126 properties (628)
|
|
759 meta-index (57)
|
|
821 footer (53)
|
|
874 EOF
|