github.com/cockroachdb/pebble@v1.1.1-0.20240513155919-3622ade60459/sstable/testdata/writer_value_blocks (about)

     1  # Size of value index is 3 bytes plus 5 + 5 = 10 bytes of trailer of the value
     2  # block and value index block. So size 18 - 13 = 5 size of the value in the
     3  # value block.
     4  build
     5  a@2.SET.1:a2
     6  b@5.SET.7:b5
     7  b@4.DEL.3:
     8  b@3.SET.2:bat3
     9  b@2.SET.1:vbat2
    10  ----
    11  value-blocks: num-values 1, num-blocks: 1, size: 18
    12  
    13  scan-raw
    14  ----
    15  a@2#1,1:in-place a2, same-pre false
    16  b@5#7,1:in-place b5, same-pre false
    17  b@4#3,0:
    18  b@3#2,1:in-place bat3, same-pre false
    19  b@2#1,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
    20  
    21  scan
    22  ----
    23  a@2#1,1:a2
    24  b@5#7,1:b5
    25  b@4#3,0:
    26  b@3#2,1:bat3
    27  b@2#1,1:vbat2
    28  
    29  scan-cloned-lazy-values
    30  ----
    31  0(in-place: len 2): a2
    32  1(in-place: len 2): b5
    33  2(in-place: len 0): 
    34  3(in-place: len 4): bat3
    35  4(lazy: len 5, attr: 5): vbat2
    36  
    37  # Size of value index is 3 bytes plus 5 + 5 = 10 bytes of trailer of the value
    38  # block and value index block. So size 33 - 13 = 20 is the total size of the
    39  # values in the value block.
    40  build
    41  blue@10.SET.20:blue10
    42  blue@8.SET.18:blue8
    43  blue@8.SET.16:blue8s
    44  blue@6.DEL.14:
    45  blue@4.SET.12:blue4
    46  blue@3.SET.10:blue3
    47  red@9.SET.18:red9
    48  red@7.SET.8:red7
    49  ----
    50  value-blocks: num-values 4, num-blocks: 1, size: 33
    51  
    52  scan-raw
    53  ----
    54  blue@10#20,1:in-place blue10, same-pre false
    55  blue@8#18,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
    56  blue@8#16,1:value-handle len 6 block 0 offset 5, att 6, same-pre true
    57  blue@6#14,0:
    58  blue@4#12,1:in-place blue4, same-pre false
    59  blue@3#10,1:value-handle len 5 block 0 offset 11, att 5, same-pre true
    60  red@9#18,1:in-place red9, same-pre false
    61  red@7#8,1:value-handle len 4 block 0 offset 16, att 4, same-pre true
    62  
    63  scan
    64  ----
    65  blue@10#20,1:blue10
    66  blue@8#18,1:blue8
    67  blue@8#16,1:blue8s
    68  blue@6#14,0:
    69  blue@4#12,1:blue4
    70  blue@3#10,1:blue3
    71  red@9#18,1:red9
    72  red@7#8,1:red7
    73  
    74  scan-cloned-lazy-values
    75  ----
    76  0(in-place: len 6): blue10
    77  1(lazy: len 5, attr: 5): blue8
    78  2(lazy: len 6, attr: 6): blue8s
    79  3(in-place: len 0): 
    80  4(in-place: len 5): blue4
    81  5(lazy: len 5, attr: 5): blue3
    82  6(in-place: len 4): red9
    83  7(lazy: len 4, attr: 4): red7
    84  
    85  # Multiple value blocks. Trailers of 5+5+5 for the two value blocks and the
    86  # value index block, totals to 15. The values are 5+6+15=26. The value index
    87  # block has to encode two tuples, each of 4 bytes (blockNumByteLength=1,
    88  # blockOffsetByteLength=2, blockLengthByteLength=1), so 2*4=8. The total is
    89  # 15+26+8=49 bytes, which corresponds to "size: 49" below.
    90  build block-size=8
    91  blue@10.SET.20:blue10
    92  blue@8.SET.18:blue8
    93  blue@8.SET.16:blue8s
    94  blue@6.SET.16:blue6isverylong
    95  ----
    96  value-blocks: num-values 3, num-blocks: 2, size: 49
    97  
    98  scan-raw
    99  ----
   100  blue@10#20,1:in-place blue10, same-pre false
   101  blue@8#18,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
   102  blue@8#16,1:value-handle len 6 block 0 offset 5, att 6, same-pre true
   103  blue@6#16,1:value-handle len 15 block 1 offset 0, att 7, same-pre true
   104  
   105  scan
   106  ----
   107  blue@10#20,1:blue10
   108  blue@8#18,1:blue8
   109  blue@8#16,1:blue8s
   110  blue@6#16,1:blue6isverylong
   111  
   112  scan-cloned-lazy-values
   113  ----
   114  0(in-place: len 6): blue10
   115  1(lazy: len 5, attr: 5): blue8
   116  2(lazy: len 6, attr: 6): blue8s
   117  3(lazy: len 15, attr: 7): blue6isverylong
   118  
   119  layout
   120  ----
   121           0  data (33)
   122           0    record (25 = 3 [0] + 15 + 7) [restart]
   123                  blue@10#20,1:blue10
   124          25    [restart 0]
   125          33    [trailer compression=none checksum=0x5fb0d551]
   126          38  data (29)
   127          38    record (21 = 3 [0] + 14 + 4) [restart]
   128                  blue@8#18,1:value handle {valueLen:5 blockNum:0 offsetInBlock:0}
   129          59    [restart 38]
   130          67    [trailer compression=none checksum=0x628e4a10]
   131          72  data (29)
   132          72    record (21 = 3 [0] + 14 + 4) [restart]
   133                  blue@8#16,1:value handle {valueLen:6 blockNum:0 offsetInBlock:5}
   134          93    [restart 72]
   135         101    [trailer compression=none checksum=0x4e65b9b6]
   136         106  data (29)
   137         106    record (21 = 3 [0] + 14 + 4) [restart]
   138                  blue@6#16,1:value handle {valueLen:15 blockNum:1 offsetInBlock:0}
   139         127    [restart 106]
   140         135    [trailer compression=none checksum=0x9f60e629]
   141         140  index (28)
   142         140    block:0/33 [restart]
   143         160    [restart 140]
   144         168    [trailer compression=none checksum=0x32b37f08]
   145         173  index (27)
   146         173    block:38/29 [restart]
   147         192    [restart 173]
   148         200    [trailer compression=none checksum=0x21d27815]
   149         205  index (30)
   150         205    block:72/29 [restart]
   151         227    [restart 205]
   152         235    [trailer compression=none checksum=0xba0b26fe]
   153         240  index (22)
   154         240    block:106/29 [restart]
   155         254    [restart 240]
   156         262    [trailer compression=none checksum=0x802be702]
   157         267  top-index (85)
   158         267    block:140/28 [restart]
   159         288    block:173/27 [restart]
   160         308    block:205/30 [restart]
   161         331    block:240/22 [restart]
   162         346    [restart 267]
   163         350    [restart 288]
   164         354    [restart 308]
   165         358    [restart 331]
   166         352    [trailer compression=snappy checksum=0x8bd0d63a]
   167         357  value-block (11)
   168         373  value-block (15)
   169         393  value-index (8)
   170         406  properties (676)
   171         406    obsolete-key (16) [restart]
   172         422    pebble.num.value-blocks (27)
   173         449    pebble.num.values.in.value-blocks (21)
   174         470    pebble.value-blocks.size (21)
   175         491    rocksdb.block.based.table.index.type (43)
   176         534    rocksdb.block.based.table.prefix.filtering (20)
   177         554    rocksdb.block.based.table.whole.key.filtering (23)
   178         577    rocksdb.comparator (37)
   179         614    rocksdb.compression (16)
   180         630    rocksdb.compression_options (106)
   181         736    rocksdb.data.size (14)
   182         750    rocksdb.deleted.keys (15)
   183         765    rocksdb.external_sst_file.global_seqno (41)
   184         806    rocksdb.external_sst_file.version (14)
   185         820    rocksdb.filter.size (15)
   186         835    rocksdb.index.partitions (20)
   187         855    rocksdb.index.size (9)
   188         864    rocksdb.merge.operands (18)
   189         882    rocksdb.merge.operator (24)
   190         906    rocksdb.num.data.blocks (19)
   191         925    rocksdb.num.entries (11)
   192         936    rocksdb.num.range-deletions (19)
   193         955    rocksdb.prefix.extractor.name (31)
   194         986    rocksdb.property.collectors (34)
   195        1020    rocksdb.raw.key.size (16)
   196        1036    rocksdb.raw.value.size (14)
   197        1050    rocksdb.top-level.index.size (24)
   198        1074    [restart 406]
   199        1082    [trailer compression=none checksum=0xbf6fe705]
   200        1087  meta-index (64)
   201        1087    pebble.value_index block:393/8 value-blocks-index-lengths: 1(num), 2(offset), 1(length) [restart]
   202        1114    rocksdb.properties block:406/676 [restart]
   203        1139    [restart 1087]
   204        1143    [restart 1114]
   205        1151    [trailer compression=none checksum=0x5a8a2a98]
   206        1156  footer (53)
   207        1156    checksum type: crc32c
   208        1157    meta: offset=1087, length=64
   209        1160    index: offset=267, length=85
   210        1163    [padding]
   211        1197    version: 4
   212        1201    magic number: 0xf09faab3f09faab3
   213        1209  EOF
   214  
   215  # Require that [c,e) must be in-place.
   216  build in-place-bound=(c,e)
   217  blue@10.SET.20:blue10
   218  blue@8.SET.18:blue8
   219  c@10.SET.16:c10
   220  c@8.SET.14:c8
   221  e@20.SET.25:eat20
   222  e@18.SET.23:eat18
   223  ----
   224  value-blocks: num-values 2, num-blocks: 1, size: 23
   225  
   226  scan-raw
   227  ----
   228  blue@10#20,1:in-place blue10, same-pre false
   229  blue@8#18,1:value-handle len 5 block 0 offset 0, att 5, same-pre true
   230  c@10#16,1:in-place c10, same-pre false
   231  c@8#14,1:in-place c8, same-pre false
   232  e@20#25,1:in-place eat20, same-pre false
   233  e@18#23,1:value-handle len 5 block 0 offset 5, att 5, same-pre true
   234  
   235  scan
   236  ----
   237  blue@10#20,1:blue10
   238  blue@8#18,1:blue8
   239  c@10#16,1:c10
   240  c@8#14,1:c8
   241  e@20#25,1:eat20
   242  e@18#23,1:eat18
   243  
   244  scan-cloned-lazy-values
   245  ----
   246  0(in-place: len 6): blue10
   247  1(lazy: len 5, attr: 5): blue8
   248  2(in-place: len 3): c10
   249  3(in-place: len 2): c8
   250  4(in-place: len 5): eat20
   251  5(lazy: len 5, attr: 5): eat18
   252  
   253  # Try write empty values to value blocks.
   254  build
   255  b@5.SET.7:b5
   256  b@3.SET.2:
   257  c@6.DEL.7:
   258  c@5.DEL.6:
   259  ----
   260  value-blocks: num-values 0, num-blocks: 0, size: 0
   261  
   262  scan-raw
   263  ----
   264  b@5#7,1:in-place b5, same-pre false
   265  b@3#2,1:in-place , same-pre true
   266  c@6#7,0:
   267  c@5#6,0:
   268  
   269  scan
   270  ----
   271  b@5#7,1:b5
   272  b@3#2,1:
   273  c@6#7,0:
   274  c@5#6,0:
   275  
   276  layout
   277  ----
   278           0  data (66)
   279           0    record (17 = 3 [0] + 11 + 3) [restart]
   280                  b@5#7,1:b5
   281          17    record (14 = 3 [1] + 10 + 1)
   282                  b@3#2,1:
   283          31    record (14 = 3 [0] + 11 + 0)
   284                  c@6#7,0:
   285          45    record (13 = 3 [1] + 10 + 0)
   286                  c@5#6,0:
   287          58    [restart 0]
   288          66    [trailer compression=none checksum=0x4e91250f]
   289          71  index (22)
   290          71    block:0/66 [restart]
   291          85    [restart 71]
   292          93    [trailer compression=none checksum=0xf80f5bcf]
   293          98  properties (606)
   294          98    obsolete-key (16) [restart]
   295         114    pebble.raw.point-tombstone.key.size (39)
   296         153    rocksdb.block.based.table.index.type (43)
   297         196    rocksdb.block.based.table.prefix.filtering (20)
   298         216    rocksdb.block.based.table.whole.key.filtering (23)
   299         239    rocksdb.comparator (37)
   300         276    rocksdb.compression (16)
   301         292    rocksdb.compression_options (106)
   302         398    rocksdb.data.size (13)
   303         411    rocksdb.deleted.keys (15)
   304         426    rocksdb.external_sst_file.global_seqno (41)
   305         467    rocksdb.external_sst_file.version (14)
   306         481    rocksdb.filter.size (15)
   307         496    rocksdb.index.size (14)
   308         510    rocksdb.merge.operands (18)
   309         528    rocksdb.merge.operator (24)
   310         552    rocksdb.num.data.blocks (19)
   311         571    rocksdb.num.entries (11)
   312         582    rocksdb.num.range-deletions (19)
   313         601    rocksdb.prefix.extractor.name (31)
   314         632    rocksdb.property.collectors (34)
   315         666    rocksdb.raw.key.size (16)
   316         682    rocksdb.raw.value.size (14)
   317         696    [restart 98]
   318         704    [trailer compression=none checksum=0xb3084f65]
   319         709  meta-index (32)
   320         709    rocksdb.properties block:98/606 [restart]
   321         733    [restart 709]
   322         741    [trailer compression=none checksum=0x907a9f2c]
   323         746  footer (53)
   324         746    checksum type: crc32c
   325         747    meta: offset=709, length=32
   326         750    index: offset=71, length=22
   327         752    [padding]
   328         787    version: 4
   329         791    magic number: 0xf09faab3f09faab3
   330         799  EOF