# 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 table-format=Pebble,v4
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,SET:in-place a2, same-pre false
b@5#7,SET:in-place b5, same-pre false
b@4#3,DEL:
b@3#2,SET:in-place bat3, same-pre false
b@2#1,SET:value-handle len 5 block 0 offset 0, att 5, same-pre true

scan
----
a@2#1,SET:a2
b@5#7,SET:b5
b@4#3,DEL:
b@3#2,SET:bat3
b@2#1,SET: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

# Repeat the above test with (Pebble,v5) [columnar blocks].

build table-format=Pebble,v5
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
----
a@2#1,SET:a2
b@5#7,SET:b5
b@4#3,DEL:
b@3#2,SET:bat3
b@2#1,SET: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

# Same data as previous, with disable-value-blocks set to true
build disable-value-blocks=true table-format=Pebble,v4
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 0, num-blocks: 0, size: 0

scan-raw
----
a@2#1,SET:in-place a2, same-pre false
b@5#7,SET:in-place b5, same-pre false
b@4#3,DEL:
b@3#2,SET:in-place bat3, same-pre false
b@2#1,SET:in-place vbat2, same-pre true

scan
----
a@2#1,SET:a2
b@5#7,SET:b5
b@4#3,DEL:
b@3#2,SET:bat3
b@2#1,SET:vbat2

# Same as above but with (Pebble,v5) [columnar blocks].

build disable-value-blocks=true table-format=Pebble,v5
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 0, num-blocks: 0, size: 0

scan
----
a@2#1,SET:a2
b@5#7,SET:b5
b@4#3,DEL:
b@3#2,SET:bat3
b@2#1,SET: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 table-format=Pebble,v4
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,SET:in-place blue10, same-pre false
blue@8#18,SET:value-handle len 5 block 0 offset 0, att 5, same-pre true
blue@8#16,SET:value-handle len 6 block 0 offset 5, att 6, same-pre true
blue@6#14,DEL:
blue@4#12,SET:in-place blue4, same-pre false
blue@3#10,SET:value-handle len 5 block 0 offset 11, att 5, same-pre true
red@9#18,SET:in-place red9, same-pre false
red@7#8,SET:value-handle len 4 block 0 offset 16, att 4, same-pre true

scan
----
blue@10#20,SET:blue10
blue@8#18,SET:blue8
blue@8#16,SET:blue8s
blue@6#14,DEL:
blue@4#12,SET:blue4
blue@3#10,SET:blue3
red@9#18,SET:red9
red@7#8,SET: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

# Same as above but with (Pebble,v5) [columnar blocks].

build table-format=Pebble,v5
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
----
blue@10#20,SET:blue10
blue@8#18,SET:blue8
blue@8#16,SET:blue8s
blue@6#14,DEL:
blue@4#12,SET:blue4
blue@3#10,SET:blue3
red@9#18,SET:red9
red@7#8,SET: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 table-format=Pebble,v4
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,SET:in-place blue10, same-pre false
blue@8#18,SET:value-handle len 5 block 0 offset 0, att 5, same-pre true
blue@8#16,SET:value-handle len 6 block 0 offset 5, att 6, same-pre true
blue@6#16,SET:value-handle len 15 block 1 offset 0, att 7, same-pre true

scan
----
blue@10#20,SET:blue10
blue@8#18,SET:blue8
blue@8#16,SET:blue8s
blue@6#16,SET: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
----
sstable
 ├── data  offset: 0  length: 33
 │    ├── 00000    record (25 = 3 [0] + 15 + 7) [restart]
 │    │            blue@10#20,SET:blue10
 │    ├── restart points
 │    │    └── 00025 [restart 0]
 │    └── trailer [compression=none checksum=0x5fb0d551]
 ├── data  offset: 38  length: 29
 │    ├── 00000    record (21 = 3 [0] + 14 + 4) [restart]
 │    │            blue@8#18,SET:value handle {ValueLen:5 BlockNum:0 OffsetInBlock:0}
 │    ├── restart points
 │    │    └── 00021 [restart 0]
 │    └── trailer [compression=none checksum=0x628e4a10]
 ├── data  offset: 72  length: 29
 │    ├── 00000    record (21 = 3 [0] + 14 + 4) [restart]
 │    │            blue@8#16,SET:value handle {ValueLen:6 BlockNum:0 OffsetInBlock:5}
 │    ├── restart points
 │    │    └── 00021 [restart 0]
 │    └── trailer [compression=none checksum=0x4e65b9b6]
 ├── data  offset: 106  length: 29
 │    ├── 00000    record (21 = 3 [0] + 14 + 4) [restart]
 │    │            blue@6#16,SET:value handle {ValueLen:15 BlockNum:1 OffsetInBlock:0}
 │    ├── restart points
 │    │    └── 00021 [restart 0]
 │    └── trailer [compression=none checksum=0x9f60e629]
 ├── index  offset: 140  length: 28
 │    ├── 00000    block:0/33 [restart]
 │    ├── restart points
 │    │    └── 00020 [restart 0]
 │    └── trailer [compression=none checksum=0x32b37f08]
 ├── index  offset: 173  length: 27
 │    ├── 00000    block:38/29 [restart]
 │    ├── restart points
 │    │    └── 00019 [restart 0]
 │    └── trailer [compression=none checksum=0x21d27815]
 ├── index  offset: 205  length: 30
 │    ├── 00000    block:72/29 [restart]
 │    ├── restart points
 │    │    └── 00022 [restart 0]
 │    └── trailer [compression=none checksum=0xba0b26fe]
 ├── index  offset: 240  length: 22
 │    ├── 00000    block:106/29 [restart]
 │    ├── restart points
 │    │    └── 00014 [restart 0]
 │    └── trailer [compression=none checksum=0x802be702]
 ├── top-index  offset: 267  length: 85
 │    ├── 00000    block:140/28 [restart]
 │    ├── 00021    block:173/27 [restart]
 │    ├── 00041    block:205/30 [restart]
 │    ├── 00064    block:240/22 [restart]
 │    ├── restart points
 │    │    ├── 00079 [restart 0]
 │    │    ├── 00083 [restart 21]
 │    │    ├── 00087 [restart 41]
 │    │    └── 00091 [restart 64]
 │    └── trailer [compression=snappy checksum=0x8bd0d63a]
 ├── value-block  offset: 357  length: 11
 │    └── trailer [compression=none checksum=0x86dee352]
 ├── value-block  offset: 373  length: 15
 │    └── trailer [compression=none checksum=0x60e7fb82]
 ├── value-index  offset: 393  length: 8
 │    └── trailer [compression=none checksum=0x43784e80]
 ├── properties  offset: 406  length: 549
 │    ├── 00000    obsolete-key (16) [restart]
 │    ├── 00016    pebble.num.value-blocks (27)
 │    ├── 00043    pebble.num.values.in.value-blocks (21)
 │    ├── 00064    pebble.value-blocks.size (21)
 │    ├── 00085    rocksdb.block.based.table.index.type (43)
 │    ├── 00128    rocksdb.comparator (37)
 │    ├── 00165    rocksdb.compression (16)
 │    ├── 00181    rocksdb.compression_options (106)
 │    ├── 00287    rocksdb.data.size (14)
 │    ├── 00301    rocksdb.deleted.keys (15)
 │    ├── 00316    rocksdb.filter.size (15)
 │    ├── 00331    rocksdb.index.partitions (20)
 │    ├── 00351    rocksdb.index.size (9)
 │    ├── 00360    rocksdb.merge.operands (18)
 │    ├── 00378    rocksdb.merge.operator (24)
 │    ├── 00402    rocksdb.num.data.blocks (19)
 │    ├── 00421    rocksdb.num.entries (11)
 │    ├── 00432    rocksdb.num.range-deletions (19)
 │    ├── 00451    rocksdb.property.collectors (36)
 │    ├── 00487    rocksdb.raw.key.size (16)
 │    ├── 00503    rocksdb.raw.value.size (14)
 │    ├── 00517    rocksdb.top-level.index.size (24)
 │    ├── restart points
 │    │    └── 00541 [restart 0]
 │    └── trailer [compression=none checksum=0x3538e71c]
 ├── meta-index  offset: 960  length: 64
 │    ├── 0000    pebble.value_index block:393/8 value-blocks-index-lengths: 1(num), 2(offset), 1(length) [restart]
 │    ├── 0027    rocksdb.properties block:406/549 [restart]
 │    ├── restart points
 │    │    ├── 00052 [restart 0]
 │    │    └── 00056 [restart 27]
 │    └── trailer [compression=none checksum=0x8b0c43ab]
 └── footer  offset: 1029  length: 53
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=960, length=64
      ├── 004  index: offset=267, length=85
      ├── 041  version: 4
      └── 045  magic number: 0xf09faab3f09faab3

# Same as above but with (Pebble,v5) [columnar blocks].

build block-size=8 table-format=Pebble,v5
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
----
blue@10#20,SET:blue10
blue@8#18,SET:blue8
blue@8#16,SET:blue8s
blue@6#16,SET: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
----
sstable
 ├── data  offset: 0  length: 81
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 00-04: x 07000000 # maximum key length: 7
 │    │    │    ├── 04-05: x 01       # version 1
 │    │    │    ├── 05-07: x 0700     # 7 columns
 │    │    │    ├── 07-11: x 01000000 # 1 rows
 │    │    │    ├── 11-12: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 12-16: x 2e000000 # col 0: page start 46
 │    │    │    ├── 16-17: b 00000011 # col 1: bytes
 │    │    │    ├── 17-21: x 37000000 # col 1: page start 55
 │    │    │    ├── 21-22: b 00000010 # col 2: uint
 │    │    │    ├── 22-26: x 3d000000 # col 2: page start 61
 │    │    │    ├── 26-27: b 00000001 # col 3: bool
 │    │    │    ├── 27-31: x 40000000 # col 3: page start 64
 │    │    │    ├── 31-32: b 00000011 # col 4: bytes
 │    │    │    ├── 32-36: x 58000000 # col 4: page start 88
 │    │    │    ├── 36-37: b 00000001 # col 5: bool
 │    │    │    ├── 37-41: x 61000000 # col 5: page start 97
 │    │    │    ├── 41-42: b 00000001 # col 6: bool
 │    │    │    └── 42-46: x 62000000 # col 6: page start 98
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 46-47: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 47-48: x 01 # encoding: 1b
 │    │    │    │    ├── 48-49: x 04 # data[0] = 4 [55 overall]
 │    │    │    │    ├── 49-50: x 04 # data[1] = 4 [55 overall]
 │    │    │    │    └── 50-51: x 04 # data[2] = 4 [55 overall]
 │    │    │    └── data
 │    │    │         ├── 51-55: x 626c7565 # data[00]: blue (block prefix)
 │    │    │         ├── 55-55: x          # data[01]: .... (bundle prefix)
 │    │    │         └── 55-55: x          # data[02]: ....
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 55-56: x 01 # encoding: 1b
 │    │    │    │    ├── 56-57: x 00 # data[0] = 0 [58 overall]
 │    │    │    │    └── 57-58: x 03 # data[1] = 3 [61 overall]
 │    │    │    └── data
 │    │    │         └── 58-61: x 403130 # data[0]: @10
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 61-62: x 02   # encoding: 2b
 │    │    │    └── 62-64: x 0114 # data[0] = 5121
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 64-65: x 00                                                               # default bitmap encoding
 │    │    │    ├── 65-72: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 72-80: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 80-88: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 88-89: x 01 # encoding: 1b
 │    │    │    │    ├── 89-90: x 00 # data[0] = 0 [91 overall]
 │    │    │    │    └── 90-91: x 06 # data[1] = 6 [97 overall]
 │    │    │    └── data
 │    │    │         └── 91-97: x 626c75653130 # data[0]: blue10
 │    │    ├── data for column 5 (bool)
 │    │    │    └── 97-98: x 01 # zero bitmap encoding
 │    │    ├── data for column 6 (bool)
 │    │    │    └── 98-99: x 01 # zero bitmap encoding
 │    │    └── 99-100: x 00 # block padding byte
 │    ├── blue@10#20,SET:blue10
 │    └── trailer [compression=snappy checksum=0xbbb19ea6]
 ├── data  offset: 86  length: 86
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 06000000 # maximum key length: 6
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 01000000 # 1 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 37000000 # col 1: page start 55
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 3c000000 # col 2: page start 60
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 40000000 # col 3: page start 64
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 58000000 # col 4: page start 88
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x 5f000000 # col 5: page start 95
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x 70000000 # col 6: page start 112
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 04 # data[0] = 4 [55 overall]
 │    │    │    │    ├── 049-050: x 04 # data[1] = 4 [55 overall]
 │    │    │    │    └── 050-051: x 04 # data[2] = 4 [55 overall]
 │    │    │    └── data
 │    │    │         ├── 051-055: x 626c7565 # data[00]: blue (block prefix)
 │    │    │         ├── 055-055: x          # data[01]: .... (bundle prefix)
 │    │    │         └── 055-055: x          # data[02]: ....
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 055-056: x 01 # encoding: 1b
 │    │    │    │    ├── 056-057: x 00 # data[0] = 0 [58 overall]
 │    │    │    │    └── 057-058: x 02 # data[1] = 2 [60 overall]
 │    │    │    └── data
 │    │    │         └── 058-060: x 4038 # data[0]: @8
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 060-061: x 02   # encoding: 2b
 │    │    │    ├── 061-062: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    └── 062-064: x 0112 # data[0] = 4609
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 064-065: x 00                                                               # default bitmap encoding
 │    │    │    ├── 065-072: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 072-080: b 0000000000000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 080-088: b 0000000000000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 088-089: x 01 # encoding: 1b
 │    │    │    │    ├── 089-090: x 00 # data[0] = 0 [91 overall]
 │    │    │    │    └── 090-091: x 04 # data[1] = 4 [95 overall]
 │    │    │    └── data
 │    │    │         └── 091-095: x a5050000 # data[0]: "\xa5\x05\x00\x00"
 │    │    ├── data for column 5 (bool)
 │    │    │    ├── 095-096: x 00                                                               # default bitmap encoding
 │    │    │    ├── 096-104: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 104-112: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 6 (bool)
 │    │    │    └── 112-113: x 01 # zero bitmap encoding
 │    │    └── 113-114: x 00 # block padding byte
 │    ├── blue@8#18,SET:value handle {ValueLen:5 BlockNum:0 OffsetInBlock:0}
 │    └── trailer [compression=snappy checksum=0xceb8415d]
 ├── data  offset: 177  length: 95
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 06000000 # maximum key length: 6
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 01000000 # 1 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 37000000 # col 1: page start 55
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 3c000000 # col 2: page start 60
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 40000000 # col 3: page start 64
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 58000000 # col 4: page start 88
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x 5f000000 # col 5: page start 95
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x 70000000 # col 6: page start 112
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 04 # data[0] = 4 [55 overall]
 │    │    │    │    ├── 049-050: x 04 # data[1] = 4 [55 overall]
 │    │    │    │    └── 050-051: x 04 # data[2] = 4 [55 overall]
 │    │    │    └── data
 │    │    │         ├── 051-055: x 626c7565 # data[00]: blue (block prefix)
 │    │    │         ├── 055-055: x          # data[01]: .... (bundle prefix)
 │    │    │         └── 055-055: x          # data[02]: ....
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 055-056: x 01 # encoding: 1b
 │    │    │    │    ├── 056-057: x 00 # data[0] = 0 [58 overall]
 │    │    │    │    └── 057-058: x 02 # data[1] = 2 [60 overall]
 │    │    │    └── data
 │    │    │         └── 058-060: x 4038 # data[0]: @8
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 060-061: x 02   # encoding: 2b
 │    │    │    ├── 061-062: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    └── 062-064: x 0110 # data[0] = 4097
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 064-065: x 00                                                               # default bitmap encoding
 │    │    │    ├── 065-072: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 072-080: b 0000000000000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 080-088: b 0000000000000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 088-089: x 01 # encoding: 1b
 │    │    │    │    ├── 089-090: x 00 # data[0] = 0 [91 overall]
 │    │    │    │    └── 090-091: x 04 # data[1] = 4 [95 overall]
 │    │    │    └── data
 │    │    │         └── 091-095: x a6060005 # data[0]: "\xa6\x06\x00\x05"
 │    │    ├── data for column 5 (bool)
 │    │    │    ├── 095-096: x 00                                                               # default bitmap encoding
 │    │    │    ├── 096-104: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 104-112: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 6 (bool)
 │    │    │    ├── 112-113: x 00                                                               # default bitmap encoding
 │    │    │    ├── 113-120: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 120-128: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 128-136: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    └── 136-137: x 00 # block padding byte
 │    ├── blue@8#16,SET:value handle {ValueLen:6 BlockNum:0 OffsetInBlock:5}
 │    └── trailer [compression=snappy checksum=0xfb8462e1]
 ├── data  offset: 277  length: 91
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 06000000 # maximum key length: 6
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 01000000 # 1 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 37000000 # col 1: page start 55
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 3c000000 # col 2: page start 60
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 40000000 # col 3: page start 64
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 58000000 # col 4: page start 88
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x 5f000000 # col 5: page start 95
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x 70000000 # col 6: page start 112
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 04 # data[0] = 4 [55 overall]
 │    │    │    │    ├── 049-050: x 04 # data[1] = 4 [55 overall]
 │    │    │    │    └── 050-051: x 04 # data[2] = 4 [55 overall]
 │    │    │    └── data
 │    │    │         ├── 051-055: x 626c7565 # data[00]: blue (block prefix)
 │    │    │         ├── 055-055: x          # data[01]: .... (bundle prefix)
 │    │    │         └── 055-055: x          # data[02]: ....
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 055-056: x 01 # encoding: 1b
 │    │    │    │    ├── 056-057: x 00 # data[0] = 0 [58 overall]
 │    │    │    │    └── 057-058: x 02 # data[1] = 2 [60 overall]
 │    │    │    └── data
 │    │    │         └── 058-060: x 4036 # data[0]: @6
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 060-061: x 02   # encoding: 2b
 │    │    │    ├── 061-062: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    └── 062-064: x 0110 # data[0] = 4097
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 064-065: x 00                                                               # default bitmap encoding
 │    │    │    ├── 065-072: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 072-080: b 0000000000000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 080-088: b 0000000000000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 088-089: x 01 # encoding: 1b
 │    │    │    │    ├── 089-090: x 00 # data[0] = 0 [91 overall]
 │    │    │    │    └── 090-091: x 04 # data[1] = 4 [95 overall]
 │    │    │    └── data
 │    │    │         └── 091-095: x a70f0100 # data[0]: "\xa7\x0f\x01\x00"
 │    │    ├── data for column 5 (bool)
 │    │    │    ├── 095-096: x 00                                                               # default bitmap encoding
 │    │    │    ├── 096-104: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 104-112: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 6 (bool)
 │    │    │    └── 112-113: x 01 # zero bitmap encoding
 │    │    └── 113-114: x 00 # block padding byte
 │    ├── blue@6#16,SET:value handle {ValueLen:15 BlockNum:1 OffsetInBlock:0}
 │    └── trailer [compression=snappy checksum=0xa053f3eb]
 ├── index  offset: 373  length: 42
 │    ├── 00000    block:0/81
 │    │   
 │    └── trailer [compression=none checksum=0x80ae3e61]
 ├── index  offset: 420  length: 42
 │    ├── 00000    block:86/86
 │    │   
 │    └── trailer [compression=none checksum=0xca4212f3]
 ├── index  offset: 467  length: 47
 │    ├── 00000    block:177/95
 │    │   
 │    └── trailer [compression=none checksum=0xb10589b8]
 ├── index  offset: 519  length: 38
 │    ├── 00000    block:277/91
 │    │   
 │    └── trailer [compression=none checksum=0xb4e5aa79]
 ├── top-index  offset: 562  length: 77
 │    ├── 00000    block:373/42
 │    │   
 │    ├── 00001    block:420/42
 │    │   
 │    ├── 00002    block:467/47
 │    │   
 │    ├── 00003    block:519/38
 │    │   
 │    └── trailer [compression=none checksum=0x27e2999a]
 ├── value-block  offset: 644  length: 11
 │    └── trailer [compression=none checksum=0x86dee352]
 ├── value-block  offset: 660  length: 15
 │    └── trailer [compression=none checksum=0x60e7fb82]
 ├── value-index  offset: 680  length: 8
 │    └── trailer [compression=none checksum=0xb327e021]
 ├── properties  offset: 693  length: 664
 │    ├── 00000    obsolete-key (16) [restart]
 │    ├── 00016    pebble.colblk.schema (68)
 │    ├── 00084    pebble.compression_stats (54)
 │    ├── 00138    pebble.num.value-blocks (20)
 │    ├── 00158    pebble.num.values.in.value-blocks (21)
 │    ├── 00179    pebble.value-blocks.size (21)
 │    ├── 00200    rocksdb.block.based.table.index.type (43)
 │    ├── 00243    rocksdb.comparator (37)
 │    ├── 00280    rocksdb.compression (16)
 │    ├── 00296    rocksdb.compression_options (106)
 │    ├── 00402    rocksdb.data.size (14)
 │    ├── 00416    rocksdb.deleted.keys (15)
 │    ├── 00431    rocksdb.filter.size (15)
 │    ├── 00446    rocksdb.index.partitions (20)
 │    ├── 00466    rocksdb.index.size (9)
 │    ├── 00475    rocksdb.merge.operands (18)
 │    ├── 00493    rocksdb.merge.operator (24)
 │    ├── 00517    rocksdb.num.data.blocks (19)
 │    ├── 00536    rocksdb.num.entries (11)
 │    ├── 00547    rocksdb.num.range-deletions (19)
 │    ├── 00566    rocksdb.property.collectors (36)
 │    ├── 00602    rocksdb.raw.key.size (16)
 │    ├── 00618    rocksdb.raw.value.size (14)
 │    ├── 00632    rocksdb.top-level.index.size (24)
 │    ├── restart points
 │    │    └── 00656 [restart 0]
 │    └── trailer [compression=none checksum=0x39f21738]
 ├── meta-index  offset: 1362  length: 64
 │    ├── 0000    pebble.value_index block:680/8 value-blocks-index-lengths: 1(num), 2(offset), 1(length) [restart]
 │    ├── 0027    rocksdb.properties block:693/664 [restart]
 │    ├── restart points
 │    │    ├── 00052 [restart 0]
 │    │    └── 00056 [restart 27]
 │    └── trailer [compression=none checksum=0xf2de4c26]
 └── footer  offset: 1431  length: 53
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=1362, length=64
      ├── 004  index: offset=562, length=77
      ├── 041  version: 5
      └── 045  magic number: 0xf09faab3f09faab3

# Try write empty values to value blocks.
build table-format=Pebble,v4
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,SET:in-place b5, same-pre false
b@3#2,SET:in-place , same-pre true
c@6#7,DEL:
c@5#6,DEL:

scan
----
b@5#7,SET:b5
b@3#2,SET:
c@6#7,DEL:
c@5#6,DEL:

layout
----
sstable
 ├── data  offset: 0  length: 66
 │    ├── 00000    record (17 = 3 [0] + 11 + 3) [restart]
 │    │            b@5#7,SET:b5
 │    ├── 00017    record (14 = 3 [1] + 10 + 1)
 │    │            b@3#2,SET:
 │    ├── 00031    record (14 = 3 [0] + 11 + 0)
 │    │            c@6#7,DEL:
 │    ├── 00045    record (13 = 3 [1] + 10 + 0)
 │    │            c@5#6,DEL:
 │    ├── restart points
 │    │    └── 00058 [restart 0]
 │    └── trailer [compression=none checksum=0x4e91250f]
 ├── index  offset: 71  length: 22
 │    ├── 00000    block:0/66 [restart]
 │    ├── restart points
 │    │    └── 00014 [restart 0]
 │    └── trailer [compression=none checksum=0xf80f5bcf]
 ├── properties  offset: 98  length: 479
 │    ├── 00000    obsolete-key (16) [restart]
 │    ├── 00016    pebble.raw.point-tombstone.key.size (39)
 │    ├── 00055    rocksdb.block.based.table.index.type (43)
 │    ├── 00098    rocksdb.comparator (37)
 │    ├── 00135    rocksdb.compression (16)
 │    ├── 00151    rocksdb.compression_options (106)
 │    ├── 00257    rocksdb.data.size (13)
 │    ├── 00270    rocksdb.deleted.keys (15)
 │    ├── 00285    rocksdb.filter.size (15)
 │    ├── 00300    rocksdb.index.size (14)
 │    ├── 00314    rocksdb.merge.operands (18)
 │    ├── 00332    rocksdb.merge.operator (24)
 │    ├── 00356    rocksdb.num.data.blocks (19)
 │    ├── 00375    rocksdb.num.entries (11)
 │    ├── 00386    rocksdb.num.range-deletions (19)
 │    ├── 00405    rocksdb.property.collectors (36)
 │    ├── 00441    rocksdb.raw.key.size (16)
 │    ├── 00457    rocksdb.raw.value.size (14)
 │    ├── restart points
 │    │    └── 00471 [restart 0]
 │    └── trailer [compression=none checksum=0xdd2d145f]
 ├── meta-index  offset: 582  length: 32
 │    ├── 0000    rocksdb.properties block:98/479 [restart]
 │    ├── restart points
 │    │    └── 00024 [restart 0]
 │    └── trailer [compression=none checksum=0xbfc95718]
 └── footer  offset: 619  length: 53
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=582, length=32
      ├── 004  index: offset=71, length=22
      ├── 041  version: 4
      └── 045  magic number: 0xf09faab3f09faab3

# Same as above but with (Pebble,v5) [columnar blocks].

build table-format=Pebble,v5
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
----
b@5#7,SET:b5
b@3#2,SET:
c@6#7,DEL:
c@5#6,DEL:

layout
----
sstable
 ├── data  offset: 0  length: 100
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 03000000 # maximum key length: 3
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 04000000 # 4 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 38000000 # col 1: page start 56
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 46000000 # col 2: page start 70
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 50000000 # col 3: page start 80
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 68000000 # col 4: page start 104
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x 70000000 # col 5: page start 112
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x 71000000 # col 6: page start 113
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 00 # data[0] = 0 [54 overall]
 │    │    │    │    ├── 049-050: x 00 # data[1] = 0 [54 overall]
 │    │    │    │    ├── 050-051: x 01 # data[2] = 1 [55 overall]
 │    │    │    │    ├── 051-052: x 01 # data[3] = 1 [55 overall]
 │    │    │    │    ├── 052-053: x 02 # data[4] = 2 [56 overall]
 │    │    │    │    └── 053-054: x 02 # data[5] = 2 [56 overall]
 │    │    │    └── data
 │    │    │         ├── 054-054: x    # data[00]:  (block prefix)
 │    │    │         ├── 054-054: x    # data[01]:  (bundle prefix)
 │    │    │         ├── 054-055: x 62 # data[02]: b
 │    │    │         ├── 055-055: x    # data[03]: .
 │    │    │         ├── 055-056: x 63 # data[04]: c
 │    │    │         └── 056-056: x    # data[05]: .
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 056-057: x 01 # encoding: 1b
 │    │    │    │    ├── 057-058: x 00 # data[0] = 0 [62 overall]
 │    │    │    │    ├── 058-059: x 02 # data[1] = 2 [64 overall]
 │    │    │    │    ├── 059-060: x 04 # data[2] = 4 [66 overall]
 │    │    │    │    ├── 060-061: x 06 # data[3] = 6 [68 overall]
 │    │    │    │    └── 061-062: x 08 # data[4] = 8 [70 overall]
 │    │    │    └── data
 │    │    │         ├── 062-064: x 4035 # data[0]: @5
 │    │    │         ├── 064-066: x 4033 # data[1]: @3
 │    │    │         ├── 066-068: x 4036 # data[2]: @6
 │    │    │         └── 068-070: x 4035 # data[3]: @5
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 070-071: x 02   # encoding: 2b
 │    │    │    ├── 071-072: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    ├── 072-074: x 0107 # data[0] = 1793
 │    │    │    ├── 074-076: x 0102 # data[1] = 513
 │    │    │    ├── 076-078: x 0007 # data[2] = 1792
 │    │    │    └── 078-080: x 0006 # data[3] = 1536
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 080-081: x 00                                                               # default bitmap encoding
 │    │    │    ├── 081-088: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 088-096: b 0000010100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 096-104: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 104-105: x 01 # encoding: 1b
 │    │    │    │    ├── 105-106: x 00 # data[0] = 0 [110 overall]
 │    │    │    │    ├── 106-107: x 02 # data[1] = 2 [112 overall]
 │    │    │    │    ├── 107-108: x 02 # data[2] = 2 [112 overall]
 │    │    │    │    ├── 108-109: x 02 # data[3] = 2 [112 overall]
 │    │    │    │    └── 109-110: x 02 # data[4] = 2 [112 overall]
 │    │    │    └── data
 │    │    │         ├── 110-112: x 6235 # data[0]: b5
 │    │    │         ├── 112-112: x      # data[1]:
 │    │    │         ├── 112-112: x      # data[2]:
 │    │    │         └── 112-112: x      # data[3]:
 │    │    ├── data for column 5 (bool)
 │    │    │    └── 112-113: x 01 # zero bitmap encoding
 │    │    ├── data for column 6 (bool)
 │    │    │    └── 113-114: x 01 # zero bitmap encoding
 │    │    └── 114-115: x 00 # block padding byte
 │    ├── b@5#7,SET:b5
 │    ├── b@3#2,SET:
 │    ├── c@6#7,DEL:
 │    ├── c@5#6,DEL:
 │    └── trailer [compression=snappy checksum=0x73ac4dc7]
 ├── index  offset: 105  length: 36
 │    ├── 00000    block:0/100
 │    │   
 │    └── trailer [compression=none checksum=0x760132f1]
 ├── properties  offset: 146  length: 592
 │    ├── 00000    obsolete-key (16) [restart]
 │    ├── 00016    pebble.colblk.schema (68)
 │    ├── 00084    pebble.compression_stats (52)
 │    ├── 00136    pebble.raw.point-tombstone.key.size (32)
 │    ├── 00168    rocksdb.block.based.table.index.type (43)
 │    ├── 00211    rocksdb.comparator (37)
 │    ├── 00248    rocksdb.compression (16)
 │    ├── 00264    rocksdb.compression_options (106)
 │    ├── 00370    rocksdb.data.size (13)
 │    ├── 00383    rocksdb.deleted.keys (15)
 │    ├── 00398    rocksdb.filter.size (15)
 │    ├── 00413    rocksdb.index.size (14)
 │    ├── 00427    rocksdb.merge.operands (18)
 │    ├── 00445    rocksdb.merge.operator (24)
 │    ├── 00469    rocksdb.num.data.blocks (19)
 │    ├── 00488    rocksdb.num.entries (11)
 │    ├── 00499    rocksdb.num.range-deletions (19)
 │    ├── 00518    rocksdb.property.collectors (36)
 │    ├── 00554    rocksdb.raw.key.size (16)
 │    ├── 00570    rocksdb.raw.value.size (14)
 │    ├── restart points
 │    │    └── 00584 [restart 0]
 │    └── trailer [compression=none checksum=0xb0db559e]
 ├── meta-index  offset: 743  length: 33
 │    ├── 0000    rocksdb.properties block:146/592 [restart]
 │    ├── restart points
 │    │    └── 00025 [restart 0]
 │    └── trailer [compression=none checksum=0x41dda72d]
 └── footer  offset: 781  length: 53
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=743, length=33
      ├── 004  index: offset=105, length=36
      ├── 041  version: 5
      └── 045  magic number: 0xf09faab3f09faab3

# Same as above but with (Pebble,v6) [footer checksum blocks].
build table-format=Pebble,v6
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
----
b@5#7,SET:b5
b@3#2,SET:
c@6#7,DEL:
c@5#6,DEL:

layout
----
sstable
 ├── data  offset: 0  length: 100
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 03000000 # maximum key length: 3
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 04000000 # 4 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 38000000 # col 1: page start 56
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 46000000 # col 2: page start 70
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 50000000 # col 3: page start 80
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 68000000 # col 4: page start 104
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x 70000000 # col 5: page start 112
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x 71000000 # col 6: page start 113
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 00 # data[0] = 0 [54 overall]
 │    │    │    │    ├── 049-050: x 00 # data[1] = 0 [54 overall]
 │    │    │    │    ├── 050-051: x 01 # data[2] = 1 [55 overall]
 │    │    │    │    ├── 051-052: x 01 # data[3] = 1 [55 overall]
 │    │    │    │    ├── 052-053: x 02 # data[4] = 2 [56 overall]
 │    │    │    │    └── 053-054: x 02 # data[5] = 2 [56 overall]
 │    │    │    └── data
 │    │    │         ├── 054-054: x    # data[00]:  (block prefix)
 │    │    │         ├── 054-054: x    # data[01]:  (bundle prefix)
 │    │    │         ├── 054-055: x 62 # data[02]: b
 │    │    │         ├── 055-055: x    # data[03]: .
 │    │    │         ├── 055-056: x 63 # data[04]: c
 │    │    │         └── 056-056: x    # data[05]: .
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 056-057: x 01 # encoding: 1b
 │    │    │    │    ├── 057-058: x 00 # data[0] = 0 [62 overall]
 │    │    │    │    ├── 058-059: x 02 # data[1] = 2 [64 overall]
 │    │    │    │    ├── 059-060: x 04 # data[2] = 4 [66 overall]
 │    │    │    │    ├── 060-061: x 06 # data[3] = 6 [68 overall]
 │    │    │    │    └── 061-062: x 08 # data[4] = 8 [70 overall]
 │    │    │    └── data
 │    │    │         ├── 062-064: x 4035 # data[0]: @5
 │    │    │         ├── 064-066: x 4033 # data[1]: @3
 │    │    │         ├── 066-068: x 4036 # data[2]: @6
 │    │    │         └── 068-070: x 4035 # data[3]: @5
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 070-071: x 02   # encoding: 2b
 │    │    │    ├── 071-072: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    ├── 072-074: x 0107 # data[0] = 1793
 │    │    │    ├── 074-076: x 0102 # data[1] = 513
 │    │    │    ├── 076-078: x 0007 # data[2] = 1792
 │    │    │    └── 078-080: x 0006 # data[3] = 1536
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 080-081: x 00                                                               # default bitmap encoding
 │    │    │    ├── 081-088: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 088-096: b 0000010100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 096-104: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 104-105: x 01 # encoding: 1b
 │    │    │    │    ├── 105-106: x 00 # data[0] = 0 [110 overall]
 │    │    │    │    ├── 106-107: x 02 # data[1] = 2 [112 overall]
 │    │    │    │    ├── 107-108: x 02 # data[2] = 2 [112 overall]
 │    │    │    │    ├── 108-109: x 02 # data[3] = 2 [112 overall]
 │    │    │    │    └── 109-110: x 02 # data[4] = 2 [112 overall]
 │    │    │    └── data
 │    │    │         ├── 110-112: x 6235 # data[0]: b5
 │    │    │         ├── 112-112: x      # data[1]:
 │    │    │         ├── 112-112: x      # data[2]:
 │    │    │         └── 112-112: x      # data[3]:
 │    │    ├── data for column 5 (bool)
 │    │    │    └── 112-113: x 01 # zero bitmap encoding
 │    │    ├── data for column 6 (bool)
 │    │    │    └── 113-114: x 01 # zero bitmap encoding
 │    │    └── 114-115: x 00 # block padding byte
 │    ├── b@5#7,SET:b5
 │    ├── b@3#2,SET:
 │    ├── c@6#7,DEL:
 │    ├── c@5#6,DEL:
 │    └── trailer [compression=snappy checksum=0x73ac4dc7]
 ├── index  offset: 105  length: 36
 │    ├── 00000    block:0/100
 │    │   
 │    └── trailer [compression=none checksum=0x760132f1]
 ├── properties  offset: 146  length: 592
 │    ├── 00000    obsolete-key (16) [restart]
 │    ├── 00016    pebble.colblk.schema (68)
 │    ├── 00084    pebble.compression_stats (52)
 │    ├── 00136    pebble.raw.point-tombstone.key.size (32)
 │    ├── 00168    rocksdb.block.based.table.index.type (43)
 │    ├── 00211    rocksdb.comparator (37)
 │    ├── 00248    rocksdb.compression (16)
 │    ├── 00264    rocksdb.compression_options (106)
 │    ├── 00370    rocksdb.data.size (13)
 │    ├── 00383    rocksdb.deleted.keys (15)
 │    ├── 00398    rocksdb.filter.size (15)
 │    ├── 00413    rocksdb.index.size (14)
 │    ├── 00427    rocksdb.merge.operands (18)
 │    ├── 00445    rocksdb.merge.operator (24)
 │    ├── 00469    rocksdb.num.data.blocks (19)
 │    ├── 00488    rocksdb.num.entries (11)
 │    ├── 00499    rocksdb.num.range-deletions (19)
 │    ├── 00518    rocksdb.property.collectors (36)
 │    ├── 00554    rocksdb.raw.key.size (16)
 │    ├── 00570    rocksdb.raw.value.size (14)
 │    ├── restart points
 │    │    └── 00584 [restart 0]
 │    └── trailer [compression=none checksum=0xb0db559e]
 ├── meta-index  offset: 743  length: 46
 │    ├── 0000    rocksdb.properties block:146/592
 │    │   
 │    └── trailer [compression=none checksum=0x22504fa3]
 └── footer  offset: 794  length: 57
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=743, length=46
      ├── 004  index: offset=105, length=36
      ├── 041  footer checksum: 0xdd471806
      ├── 045  version: 6
      └── 049  magic number: 0xf09faab3f09faab3

# Same as above but with (Pebble,v7) [footer attributes].
build table-format=Pebble,v7
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
----
blue@10#20,SET:blue10
blue@8#18,SET:blue8
blue@8#16,SET:blue8s
blue@6#14,DEL:
blue@4#12,SET:blue4
blue@3#10,SET:blue3
red@9#18,SET:red9
red@7#8,SET: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

layout
----
sstable
 ├── data  offset: 0  length: 186
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 07000000 # maximum key length: 7
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 08000000 # 8 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 41000000 # col 1: page start 65
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 5c000000 # col 2: page start 92
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 6e000000 # col 3: page start 110
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 80000000 # col 4: page start 128
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x a9000000 # col 5: page start 169
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x c0000000 # col 6: page start 192
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 00 # data[0] = 0 [58 overall]
 │    │    │    │    ├── 049-050: x 00 # data[1] = 0 [58 overall]
 │    │    │    │    ├── 050-051: x 04 # data[2] = 4 [62 overall]
 │    │    │    │    ├── 051-052: x 04 # data[3] = 4 [62 overall]
 │    │    │    │    ├── 052-053: x 04 # data[4] = 4 [62 overall]
 │    │    │    │    ├── 053-054: x 04 # data[5] = 4 [62 overall]
 │    │    │    │    ├── 054-055: x 04 # data[6] = 4 [62 overall]
 │    │    │    │    ├── 055-056: x 04 # data[7] = 4 [62 overall]
 │    │    │    │    ├── 056-057: x 07 # data[8] = 7 [65 overall]
 │    │    │    │    └── 057-058: x 07 # data[9] = 7 [65 overall]
 │    │    │    └── data
 │    │    │         ├── 058-058: x          # data[00]:  (block prefix)
 │    │    │         ├── 058-058: x          # data[01]:  (bundle prefix)
 │    │    │         ├── 058-062: x 626c7565 # data[02]: blue
 │    │    │         ├── 062-062: x          # data[03]: ....
 │    │    │         ├── 062-062: x          # data[04]: ....
 │    │    │         ├── 062-062: x          # data[05]: ....
 │    │    │         ├── 062-062: x          # data[06]: ....
 │    │    │         ├── 062-062: x          # data[07]: ....
 │    │    │         ├── 062-065: x 726564   # data[08]: red
 │    │    │         └── 065-065: x          # data[09]: ...
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 065-066: x 01 # encoding: 1b
 │    │    │    │    ├── 066-067: x 00 # data[0] = 0 [75 overall]
 │    │    │    │    ├── 067-068: x 03 # data[1] = 3 [78 overall]
 │    │    │    │    ├── 068-069: x 05 # data[2] = 5 [80 overall]
 │    │    │    │    ├── 069-070: x 07 # data[3] = 7 [82 overall]
 │    │    │    │    ├── 070-071: x 09 # data[4] = 9 [84 overall]
 │    │    │    │    ├── 071-072: x 0b # data[5] = 11 [86 overall]
 │    │    │    │    ├── 072-073: x 0d # data[6] = 13 [88 overall]
 │    │    │    │    ├── 073-074: x 0f # data[7] = 15 [90 overall]
 │    │    │    │    └── 074-075: x 11 # data[8] = 17 [92 overall]
 │    │    │    └── data
 │    │    │         ├── 075-078: x 403130 # data[0]: @10
 │    │    │         ├── 078-080: x 4038   # data[1]: @8
 │    │    │         ├── 080-082: x 4038   # data[2]: @8
 │    │    │         ├── 082-084: x 4036   # data[3]: @6
 │    │    │         ├── 084-086: x 4034   # data[4]: @4
 │    │    │         ├── 086-088: x 4033   # data[5]: @3
 │    │    │         ├── 088-090: x 4039   # data[6]: @9
 │    │    │         └── 090-092: x 4037   # data[7]: @7
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 092-093: x 02   # encoding: 2b
 │    │    │    ├── 093-094: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    ├── 094-096: x 0114 # data[0] = 5121
 │    │    │    ├── 096-098: x 0112 # data[1] = 4609
 │    │    │    ├── 098-100: x 0110 # data[2] = 4097
 │    │    │    ├── 100-102: x 000e # data[3] = 3584
 │    │    │    ├── 102-104: x 010c # data[4] = 3073
 │    │    │    ├── 104-106: x 010a # data[5] = 2561
 │    │    │    ├── 106-108: x 0112 # data[6] = 4609
 │    │    │    └── 108-110: x 0108 # data[7] = 2049
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 110-111: x 00                                                               # default bitmap encoding
 │    │    │    ├── 111-112: x 00                                                               # padding to align to 64-bit boundary
 │    │    │    ├── 112-120: b 0100000100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 120-128: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 128-129: x 01 # encoding: 1b
 │    │    │    │    ├── 129-130: x 00 # data[0] = 0 [138 overall]
 │    │    │    │    ├── 130-131: x 06 # data[1] = 6 [144 overall]
 │    │    │    │    ├── 131-132: x 0a # data[2] = 10 [148 overall]
 │    │    │    │    ├── 132-133: x 0e # data[3] = 14 [152 overall]
 │    │    │    │    ├── 133-134: x 0e # data[4] = 14 [152 overall]
 │    │    │    │    ├── 134-135: x 13 # data[5] = 19 [157 overall]
 │    │    │    │    ├── 135-136: x 17 # data[6] = 23 [161 overall]
 │    │    │    │    ├── 136-137: x 1b # data[7] = 27 [165 overall]
 │    │    │    │    └── 137-138: x 1f # data[8] = 31 [169 overall]
 │    │    │    └── data
 │    │    │         ├── 138-144: x 626c75653130 # data[0]: blue10
 │    │    │         ├── 144-148: x a5050000     # data[1]: "\xa5\x05\x00\x00"
 │    │    │         ├── 148-152: x a6060005     # data[2]: "\xa6\x06\x00\x05"
 │    │    │         ├── 152-152: x              # data[3]:
 │    │    │         ├── 152-157: x 626c756534   # data[4]: blue4
 │    │    │         ├── 157-161: x a505000b     # data[5]: "\xa5\x05\x00\v"
 │    │    │         ├── 161-165: x 72656439     # data[6]: red9
 │    │    │         └── 165-169: x a4040010     # data[7]: "\xa4\x04\x00\x10"
 │    │    ├── data for column 5 (bool)
 │    │    │    ├── 169-170: x 00                                                               # default bitmap encoding
 │    │    │    ├── 170-176: x 000000000000                                                     # padding to align to 64-bit boundary
 │    │    │    ├── 176-184: b 1010011000000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 184-192: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 6 (bool)
 │    │    │    ├── 192-193: x 00                                                               # default bitmap encoding
 │    │    │    ├── 193-200: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 200-208: b 0000010000000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 208-216: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    └── 216-217: x 00 # block padding byte
 │    ├── blue@10#20,SET:blue10
 │    ├── blue@8#18,SET:value handle {ValueLen:5 BlockNum:0 OffsetInBlock:0}
 │    ├── blue@8#16,SET:value handle {ValueLen:6 BlockNum:0 OffsetInBlock:5}
 │    ├── blue@6#14,DEL:
 │    ├── blue@4#12,SET:blue4
 │    ├── blue@3#10,SET:value handle {ValueLen:5 BlockNum:0 OffsetInBlock:11}
 │    ├── red@9#18,SET:red9
 │    ├── red@7#8,SET:value handle {ValueLen:4 BlockNum:0 OffsetInBlock:16}
 │    └── trailer [compression=snappy checksum=0x194cf241]
 ├── index  offset: 191  length: 36
 │    ├── 00000    block:0/186
 │    │   
 │    └── trailer [compression=none checksum=0x8e45fa7b]
 ├── value-block  offset: 232  length: 20
 │    └── trailer [compression=none checksum=0x460ef26f]
 ├── value-index  offset: 257  length: 3
 │    └── trailer [compression=none checksum=0x762643d7]
 ├── properties  offset: 265  length: 638
 │    ├── 00000    obsolete-key (13)
 │    ├── 00013    pebble.colblk.schema (65)
 │    ├── 00078    pebble.compression_stats (58)
 │    ├── 00136    pebble.num.value-blocks (24)
 │    ├── 00160    pebble.num.values.in.value-blocks (34)
 │    ├── 00194    pebble.raw.point-tombstone.key.size (36)
 │    ├── 00230    pebble.value-blocks.size (25)
 │    ├── 00255    rocksdb.block.based.table.index.type (40)
 │    ├── 00295    rocksdb.comparator (42)
 │    ├── 00337    rocksdb.compression (25)
 │    ├── 00362    rocksdb.compression_options (122)
 │    ├── 00484    rocksdb.data.size (19)
 │    ├── 00503    rocksdb.deleted.keys (21)
 │    ├── 00524    rocksdb.filter.size (20)
 │    ├── 00544    rocksdb.index.size (19)
 │    ├── 00563    rocksdb.merge.operands (23)
 │    ├── 00586    rocksdb.merge.operator (40)
 │    ├── 00626    rocksdb.num.data.blocks (24)
 │    ├── 00650    rocksdb.num.entries (20)
 │    ├── 00670    rocksdb.num.range-deletions (28)
 │    ├── 00698    rocksdb.property.collectors (41)
 │    ├── 00739    rocksdb.raw.key.size (21)
 │    ├── 00760    rocksdb.raw.value.size (23)
 │    └── trailer [compression=snappy checksum=0xc153389a]
 ├── meta-index  offset: 908  length: 72
 │    ├── 0000    pebble.value_index block:257/3 value-blocks-index-lengths: 1(num), 1(offset), 1(length)
 │    │   
 │    ├── 0001    rocksdb.properties block:265/638
 │    │   
 │    └── trailer [compression=none checksum=0xa018198d]
 └── footer  offset: 985  length: 61
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=908, length=72
      ├── 004  index: offset=191, length=36
      ├── 041  attributes: [ValueBlocks,PointKeys]
      ├── 045  footer checksum: 0x743872ab
      ├── 049  version: 7
      └── 053  magic number: 0xf09faab3f09faab3


build table-format=Pebble,v7
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
----
b@5#7,SET:b5
b@3#2,SET:
c@6#7,DEL:
c@5#6,DEL:

layout
----
sstable
 ├── data  offset: 0  length: 100
 │    ├── data block header
 │    │    ├── columnar block header
 │    │    │    ├── 000-004: x 03000000 # maximum key length: 3
 │    │    │    ├── 004-005: x 01       # version 1
 │    │    │    ├── 005-007: x 0700     # 7 columns
 │    │    │    ├── 007-011: x 04000000 # 4 rows
 │    │    │    ├── 011-012: b 00000100 # col 0: prefixbytes
 │    │    │    ├── 012-016: x 2e000000 # col 0: page start 46
 │    │    │    ├── 016-017: b 00000011 # col 1: bytes
 │    │    │    ├── 017-021: x 38000000 # col 1: page start 56
 │    │    │    ├── 021-022: b 00000010 # col 2: uint
 │    │    │    ├── 022-026: x 46000000 # col 2: page start 70
 │    │    │    ├── 026-027: b 00000001 # col 3: bool
 │    │    │    ├── 027-031: x 50000000 # col 3: page start 80
 │    │    │    ├── 031-032: b 00000011 # col 4: bytes
 │    │    │    ├── 032-036: x 68000000 # col 4: page start 104
 │    │    │    ├── 036-037: b 00000001 # col 5: bool
 │    │    │    ├── 037-041: x 70000000 # col 5: page start 112
 │    │    │    ├── 041-042: b 00000001 # col 6: bool
 │    │    │    └── 042-046: x 71000000 # col 6: page start 113
 │    │    ├── data for column 0 (prefixbytes)
 │    │    │    ├── 046-047: x 04 # bundle size: 16
 │    │    │    ├── offsets table
 │    │    │    │    ├── 047-048: x 01 # encoding: 1b
 │    │    │    │    ├── 048-049: x 00 # data[0] = 0 [54 overall]
 │    │    │    │    ├── 049-050: x 00 # data[1] = 0 [54 overall]
 │    │    │    │    ├── 050-051: x 01 # data[2] = 1 [55 overall]
 │    │    │    │    ├── 051-052: x 01 # data[3] = 1 [55 overall]
 │    │    │    │    ├── 052-053: x 02 # data[4] = 2 [56 overall]
 │    │    │    │    └── 053-054: x 02 # data[5] = 2 [56 overall]
 │    │    │    └── data
 │    │    │         ├── 054-054: x    # data[00]:  (block prefix)
 │    │    │         ├── 054-054: x    # data[01]:  (bundle prefix)
 │    │    │         ├── 054-055: x 62 # data[02]: b
 │    │    │         ├── 055-055: x    # data[03]: .
 │    │    │         ├── 055-056: x 63 # data[04]: c
 │    │    │         └── 056-056: x    # data[05]: .
 │    │    ├── data for column 1 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 056-057: x 01 # encoding: 1b
 │    │    │    │    ├── 057-058: x 00 # data[0] = 0 [62 overall]
 │    │    │    │    ├── 058-059: x 02 # data[1] = 2 [64 overall]
 │    │    │    │    ├── 059-060: x 04 # data[2] = 4 [66 overall]
 │    │    │    │    ├── 060-061: x 06 # data[3] = 6 [68 overall]
 │    │    │    │    └── 061-062: x 08 # data[4] = 8 [70 overall]
 │    │    │    └── data
 │    │    │         ├── 062-064: x 4035 # data[0]: @5
 │    │    │         ├── 064-066: x 4033 # data[1]: @3
 │    │    │         ├── 066-068: x 4036 # data[2]: @6
 │    │    │         └── 068-070: x 4035 # data[3]: @5
 │    │    ├── data for column 2 (uint)
 │    │    │    ├── 070-071: x 02   # encoding: 2b
 │    │    │    ├── 071-072: x 00   # padding (aligning to 16-bit boundary)
 │    │    │    ├── 072-074: x 0107 # data[0] = 1793
 │    │    │    ├── 074-076: x 0102 # data[1] = 513
 │    │    │    ├── 076-078: x 0007 # data[2] = 1792
 │    │    │    └── 078-080: x 0006 # data[3] = 1536
 │    │    ├── data for column 3 (bool)
 │    │    │    ├── 080-081: x 00                                                               # default bitmap encoding
 │    │    │    ├── 081-088: x 00000000000000                                                   # padding to align to 64-bit boundary
 │    │    │    ├── 088-096: b 0000010100000000000000000000000000000000000000000000000000000000 # bitmap word 0
 │    │    │    └── 096-104: b 0000000100000000000000000000000000000000000000000000000000000000 # bitmap summary word 0-63
 │    │    ├── data for column 4 (bytes)
 │    │    │    ├── offsets table
 │    │    │    │    ├── 104-105: x 01 # encoding: 1b
 │    │    │    │    ├── 105-106: x 00 # data[0] = 0 [110 overall]
 │    │    │    │    ├── 106-107: x 02 # data[1] = 2 [112 overall]
 │    │    │    │    ├── 107-108: x 02 # data[2] = 2 [112 overall]
 │    │    │    │    ├── 108-109: x 02 # data[3] = 2 [112 overall]
 │    │    │    │    └── 109-110: x 02 # data[4] = 2 [112 overall]
 │    │    │    └── data
 │    │    │         ├── 110-112: x 6235 # data[0]: b5
 │    │    │         ├── 112-112: x      # data[1]:
 │    │    │         ├── 112-112: x      # data[2]:
 │    │    │         └── 112-112: x      # data[3]:
 │    │    ├── data for column 5 (bool)
 │    │    │    └── 112-113: x 01 # zero bitmap encoding
 │    │    ├── data for column 6 (bool)
 │    │    │    └── 113-114: x 01 # zero bitmap encoding
 │    │    └── 114-115: x 00 # block padding byte
 │    ├── b@5#7,SET:b5
 │    ├── b@3#2,SET:
 │    ├── c@6#7,DEL:
 │    ├── c@5#6,DEL:
 │    └── trailer [compression=snappy checksum=0x73ac4dc7]
 ├── index  offset: 105  length: 36
 │    ├── 00000    block:0/100
 │    │   
 │    └── trailer [compression=none checksum=0x760132f1]
 ├── properties  offset: 146  length: 570
 │    ├── 00000    obsolete-key (13)
 │    ├── 00013    pebble.colblk.schema (65)
 │    ├── 00078    pebble.compression_stats (58)
 │    ├── 00136    pebble.raw.point-tombstone.key.size (36)
 │    ├── 00172    rocksdb.block.based.table.index.type (40)
 │    ├── 00212    rocksdb.comparator (42)
 │    ├── 00254    rocksdb.compression (25)
 │    ├── 00279    rocksdb.compression_options (122)
 │    ├── 00401    rocksdb.data.size (18)
 │    ├── 00419    rocksdb.deleted.keys (21)
 │    ├── 00440    rocksdb.filter.size (20)
 │    ├── 00460    rocksdb.index.size (19)
 │    ├── 00479    rocksdb.merge.operands (23)
 │    ├── 00502    rocksdb.merge.operator (40)
 │    ├── 00542    rocksdb.num.data.blocks (24)
 │    ├── 00566    rocksdb.num.entries (20)
 │    ├── 00586    rocksdb.num.range-deletions (28)
 │    ├── 00614    rocksdb.property.collectors (41)
 │    ├── 00655    rocksdb.raw.key.size (21)
 │    ├── 00676    rocksdb.raw.value.size (23)
 │    └── trailer [compression=snappy checksum=0x9f389d66]
 ├── meta-index  offset: 721  length: 46
 │    ├── 0000    rocksdb.properties block:146/570
 │    │   
 │    └── trailer [compression=none checksum=0xc5dfa63]
 └── footer  offset: 772  length: 61
      ├── 000  checksum type: crc32c
      ├── 001  meta: offset=721, length=46
      ├── 004  index: offset=105, length=36
      ├── 041  attributes: [PointKeys]
      ├── 045  footer checksum: 0x16afbae8
      ├── 049  version: 7
      └── 053  magic number: 0xf09faab3f09faab3
