mirror of
https://source.quilibrium.com/quilibrium/ceremonyclient.git
synced 2024-12-26 08:35:17 +00:00
331 lines
10 KiB
Plaintext
331 lines
10 KiB
Plaintext
# Size of value index is 3 bytes plus 5 + 5 = 10 bytes of trailer of the value
|
|
# block and value index block. So size 18 - 13 = 5 size of the value in the
|
|
# value block.
|
|
build
|
|
a@2.SET.1:a2
|
|
b@5.SET.7:b5
|
|
b@4.DEL.3:
|
|
b@3.SET.2:bat3
|
|
b@2.SET.1:vbat2
|
|
----
|
|
value-blocks: num-values 1, num-blocks: 1, size: 18
|
|
|
|
scan-raw
|
|
----
|
|
a@2#1,1:in-place a2, same-pre false
|
|
b@5#7,1:in-place b5, same-pre false
|
|
b@4#3,0:
|
|
b@3#2,1:in-place bat3, same-pre false
|
|
b@2#1,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
|
|
|
|
scan
|
|
----
|
|
a@2#1,1:a2
|
|
b@5#7,1:b5
|
|
b@4#3,0:
|
|
b@3#2,1:bat3
|
|
b@2#1,1:vbat2
|
|
|
|
scan-cloned-lazy-values
|
|
----
|
|
0(in-place: len 2): a2
|
|
1(in-place: len 2): b5
|
|
2(in-place: len 0):
|
|
3(in-place: len 4): bat3
|
|
4(lazy: len 5, attr: 5): vbat2
|
|
|
|
# Size of value index is 3 bytes plus 5 + 5 = 10 bytes of trailer of the value
|
|
# block and value index block. So size 33 - 13 = 20 is the total size of the
|
|
# values in the value block.
|
|
build
|
|
blue@10.SET.20:blue10
|
|
blue@8.SET.18:blue8
|
|
blue@8.SET.16:blue8s
|
|
blue@6.DEL.14:
|
|
blue@4.SET.12:blue4
|
|
blue@3.SET.10:blue3
|
|
red@9.SET.18:red9
|
|
red@7.SET.8:red7
|
|
----
|
|
value-blocks: num-values 4, num-blocks: 1, size: 33
|
|
|
|
scan-raw
|
|
----
|
|
blue@10#20,1:in-place blue10, same-pre false
|
|
blue@8#18,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
|
|
blue@8#16,1:value-handle len 6 block 0 offset 5, att 6, same-pre true
|
|
blue@6#14,0:
|
|
blue@4#12,1:in-place blue4, same-pre false
|
|
blue@3#10,1:value-handle len 5 block 0 offset 11, att 5, same-pre true
|
|
red@9#18,1:in-place red9, same-pre false
|
|
red@7#8,1:value-handle len 4 block 0 offset 16, att 4, same-pre true
|
|
|
|
scan
|
|
----
|
|
blue@10#20,1:blue10
|
|
blue@8#18,1:blue8
|
|
blue@8#16,1:blue8s
|
|
blue@6#14,0:
|
|
blue@4#12,1:blue4
|
|
blue@3#10,1:blue3
|
|
red@9#18,1:red9
|
|
red@7#8,1:red7
|
|
|
|
scan-cloned-lazy-values
|
|
----
|
|
0(in-place: len 6): blue10
|
|
1(lazy: len 5, attr: 5): blue8
|
|
2(lazy: len 6, attr: 6): blue8s
|
|
3(in-place: len 0):
|
|
4(in-place: len 5): blue4
|
|
5(lazy: len 5, attr: 5): blue3
|
|
6(in-place: len 4): red9
|
|
7(lazy: len 4, attr: 4): red7
|
|
|
|
# Multiple value blocks. Trailers of 5+5+5 for the two value blocks and the
|
|
# value index block, totals to 15. The values are 5+6+15=26. The value index
|
|
# block has to encode two tuples, each of 4 bytes (blockNumByteLength=1,
|
|
# blockOffsetByteLength=2, blockLengthByteLength=1), so 2*4=8. The total is
|
|
# 15+26+8=49 bytes, which corresponds to "size: 49" below.
|
|
build block-size=8
|
|
blue@10.SET.20:blue10
|
|
blue@8.SET.18:blue8
|
|
blue@8.SET.16:blue8s
|
|
blue@6.SET.16:blue6isverylong
|
|
----
|
|
value-blocks: num-values 3, num-blocks: 2, size: 49
|
|
|
|
scan-raw
|
|
----
|
|
blue@10#20,1:in-place blue10, same-pre false
|
|
blue@8#18,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
|
|
blue@8#16,1:value-handle len 6 block 0 offset 5, att 6, same-pre true
|
|
blue@6#16,1:value-handle len 15 block 1 offset 0, att 7, same-pre true
|
|
|
|
scan
|
|
----
|
|
blue@10#20,1:blue10
|
|
blue@8#18,1:blue8
|
|
blue@8#16,1:blue8s
|
|
blue@6#16,1:blue6isverylong
|
|
|
|
scan-cloned-lazy-values
|
|
----
|
|
0(in-place: len 6): blue10
|
|
1(lazy: len 5, attr: 5): blue8
|
|
2(lazy: len 6, attr: 6): blue8s
|
|
3(lazy: len 15, attr: 7): blue6isverylong
|
|
|
|
layout
|
|
----
|
|
0 data (33)
|
|
0 record (25 = 3 [0] + 15 + 7) [restart]
|
|
blue@10#20,1:blue10
|
|
25 [restart 0]
|
|
33 [trailer compression=none checksum=0x5fb0d551]
|
|
38 data (29)
|
|
38 record (21 = 3 [0] + 14 + 4) [restart]
|
|
blue@8#18,1:value handle {valueLen:5 blockNum:0 offsetInBlock:0}
|
|
59 [restart 38]
|
|
67 [trailer compression=none checksum=0x628e4a10]
|
|
72 data (29)
|
|
72 record (21 = 3 [0] + 14 + 4) [restart]
|
|
blue@8#16,1:value handle {valueLen:6 blockNum:0 offsetInBlock:5}
|
|
93 [restart 72]
|
|
101 [trailer compression=none checksum=0x4e65b9b6]
|
|
106 data (29)
|
|
106 record (21 = 3 [0] + 14 + 4) [restart]
|
|
blue@6#16,1:value handle {valueLen:15 blockNum:1 offsetInBlock:0}
|
|
127 [restart 106]
|
|
135 [trailer compression=none checksum=0x9f60e629]
|
|
140 index (28)
|
|
140 block:0/33 [restart]
|
|
160 [restart 140]
|
|
168 [trailer compression=none checksum=0x32b37f08]
|
|
173 index (27)
|
|
173 block:38/29 [restart]
|
|
192 [restart 173]
|
|
200 [trailer compression=none checksum=0x21d27815]
|
|
205 index (30)
|
|
205 block:72/29 [restart]
|
|
227 [restart 205]
|
|
235 [trailer compression=none checksum=0xba0b26fe]
|
|
240 index (22)
|
|
240 block:106/29 [restart]
|
|
254 [restart 240]
|
|
262 [trailer compression=none checksum=0x802be702]
|
|
267 top-index (85)
|
|
267 block:140/28 [restart]
|
|
288 block:173/27 [restart]
|
|
308 block:205/30 [restart]
|
|
331 block:240/22 [restart]
|
|
346 [restart 267]
|
|
350 [restart 288]
|
|
354 [restart 308]
|
|
358 [restart 331]
|
|
352 [trailer compression=snappy checksum=0x8bd0d63a]
|
|
357 value-block (11)
|
|
373 value-block (15)
|
|
393 value-index (8)
|
|
406 properties (676)
|
|
406 obsolete-key (16) [restart]
|
|
422 pebble.num.value-blocks (27)
|
|
449 pebble.num.values.in.value-blocks (21)
|
|
470 pebble.value-blocks.size (21)
|
|
491 rocksdb.block.based.table.index.type (43)
|
|
534 rocksdb.block.based.table.prefix.filtering (20)
|
|
554 rocksdb.block.based.table.whole.key.filtering (23)
|
|
577 rocksdb.comparator (37)
|
|
614 rocksdb.compression (16)
|
|
630 rocksdb.compression_options (106)
|
|
736 rocksdb.data.size (14)
|
|
750 rocksdb.deleted.keys (15)
|
|
765 rocksdb.external_sst_file.global_seqno (41)
|
|
806 rocksdb.external_sst_file.version (14)
|
|
820 rocksdb.filter.size (15)
|
|
835 rocksdb.index.partitions (20)
|
|
855 rocksdb.index.size (9)
|
|
864 rocksdb.merge.operands (18)
|
|
882 rocksdb.merge.operator (24)
|
|
906 rocksdb.num.data.blocks (19)
|
|
925 rocksdb.num.entries (11)
|
|
936 rocksdb.num.range-deletions (19)
|
|
955 rocksdb.prefix.extractor.name (31)
|
|
986 rocksdb.property.collectors (34)
|
|
1020 rocksdb.raw.key.size (16)
|
|
1036 rocksdb.raw.value.size (14)
|
|
1050 rocksdb.top-level.index.size (24)
|
|
1074 [restart 406]
|
|
1082 [trailer compression=none checksum=0xbf6fe705]
|
|
1087 meta-index (64)
|
|
1087 pebble.value_index block:393/8 value-blocks-index-lengths: 1(num), 2(offset), 1(length) [restart]
|
|
1114 rocksdb.properties block:406/676 [restart]
|
|
1139 [restart 1087]
|
|
1143 [restart 1114]
|
|
1151 [trailer compression=none checksum=0x5a8a2a98]
|
|
1156 footer (53)
|
|
1156 checksum type: crc32c
|
|
1157 meta: offset=1087, length=64
|
|
1160 index: offset=267, length=85
|
|
1163 [padding]
|
|
1197 version: 4
|
|
1201 magic number: 0xf09faab3f09faab3
|
|
1209 EOF
|
|
|
|
# Require that [c,e) must be in-place.
|
|
build in-place-bound=(c,e)
|
|
blue@10.SET.20:blue10
|
|
blue@8.SET.18:blue8
|
|
c@10.SET.16:c10
|
|
c@8.SET.14:c8
|
|
e@20.SET.25:eat20
|
|
e@18.SET.23:eat18
|
|
----
|
|
value-blocks: num-values 2, num-blocks: 1, size: 23
|
|
|
|
scan-raw
|
|
----
|
|
blue@10#20,1:in-place blue10, same-pre false
|
|
blue@8#18,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
|
|
c@10#16,1:in-place c10, same-pre false
|
|
c@8#14,1:in-place c8, same-pre false
|
|
e@20#25,1:in-place eat20, same-pre false
|
|
e@18#23,1:value-handle len 5 block 0 offset 5, att 5, same-pre true
|
|
|
|
scan
|
|
----
|
|
blue@10#20,1:blue10
|
|
blue@8#18,1:blue8
|
|
c@10#16,1:c10
|
|
c@8#14,1:c8
|
|
e@20#25,1:eat20
|
|
e@18#23,1:eat18
|
|
|
|
scan-cloned-lazy-values
|
|
----
|
|
0(in-place: len 6): blue10
|
|
1(lazy: len 5, attr: 5): blue8
|
|
2(in-place: len 3): c10
|
|
3(in-place: len 2): c8
|
|
4(in-place: len 5): eat20
|
|
5(lazy: len 5, attr: 5): eat18
|
|
|
|
# Try write empty values to value blocks.
|
|
build
|
|
b@5.SET.7:b5
|
|
b@3.SET.2:
|
|
c@6.DEL.7:
|
|
c@5.DEL.6:
|
|
----
|
|
value-blocks: num-values 0, num-blocks: 0, size: 0
|
|
|
|
scan-raw
|
|
----
|
|
b@5#7,1:in-place b5, same-pre false
|
|
b@3#2,1:in-place , same-pre true
|
|
c@6#7,0:
|
|
c@5#6,0:
|
|
|
|
scan
|
|
----
|
|
b@5#7,1:b5
|
|
b@3#2,1:
|
|
c@6#7,0:
|
|
c@5#6,0:
|
|
|
|
layout
|
|
----
|
|
0 data (66)
|
|
0 record (17 = 3 [0] + 11 + 3) [restart]
|
|
b@5#7,1:b5
|
|
17 record (14 = 3 [1] + 10 + 1)
|
|
b@3#2,1:
|
|
31 record (14 = 3 [0] + 11 + 0)
|
|
c@6#7,0:
|
|
45 record (13 = 3 [1] + 10 + 0)
|
|
c@5#6,0:
|
|
58 [restart 0]
|
|
66 [trailer compression=none checksum=0x4e91250f]
|
|
71 index (22)
|
|
71 block:0/66 [restart]
|
|
85 [restart 71]
|
|
93 [trailer compression=none checksum=0xf80f5bcf]
|
|
98 properties (606)
|
|
98 obsolete-key (16) [restart]
|
|
114 pebble.raw.point-tombstone.key.size (39)
|
|
153 rocksdb.block.based.table.index.type (43)
|
|
196 rocksdb.block.based.table.prefix.filtering (20)
|
|
216 rocksdb.block.based.table.whole.key.filtering (23)
|
|
239 rocksdb.comparator (37)
|
|
276 rocksdb.compression (16)
|
|
292 rocksdb.compression_options (106)
|
|
398 rocksdb.data.size (13)
|
|
411 rocksdb.deleted.keys (15)
|
|
426 rocksdb.external_sst_file.global_seqno (41)
|
|
467 rocksdb.external_sst_file.version (14)
|
|
481 rocksdb.filter.size (15)
|
|
496 rocksdb.index.size (14)
|
|
510 rocksdb.merge.operands (18)
|
|
528 rocksdb.merge.operator (24)
|
|
552 rocksdb.num.data.blocks (19)
|
|
571 rocksdb.num.entries (11)
|
|
582 rocksdb.num.range-deletions (19)
|
|
601 rocksdb.prefix.extractor.name (31)
|
|
632 rocksdb.property.collectors (34)
|
|
666 rocksdb.raw.key.size (16)
|
|
682 rocksdb.raw.value.size (14)
|
|
696 [restart 98]
|
|
704 [trailer compression=none checksum=0xb3084f65]
|
|
709 meta-index (32)
|
|
709 rocksdb.properties block:98/606 [restart]
|
|
733 [restart 709]
|
|
741 [trailer compression=none checksum=0x907a9f2c]
|
|
746 footer (53)
|
|
746 checksum type: crc32c
|
|
747 meta: offset=709, length=32
|
|
750 index: offset=71, length=22
|
|
752 [padding]
|
|
787 version: 4
|
|
791 magic number: 0xf09faab3f09faab3
|
|
799 EOF
|