github.com/cockroachdb/pebble@v0.0.0-20231214172447-ab4952c5f87b/testdata/singledel_manual_compaction (about)

     1  # This is not actually a manual compaction test, and simply uses manual
     2  # compaction to demonstrate single delete semantics. Specifically, it
     3  # demonstrates that the behavior can be non-deterministic if not used
     4  # correctly.
     5  
     6  # Define a sequence of SET=>SET=>DEL=>SET=>SINGLEDEL.
     7  define target-file-sizes=(1, 1, 1, 1, 1)
     8  L1
     9    a.SINGLEDEL.10:
    10  L2
    11    a.SET.9:v3
    12  L3
    13    a.DEL.8:
    14  L4
    15    a.SET.7:v2
    16  L5
    17    a.SET.6:v1
    18  ----
    19  1:
    20    000004:[a#10,SINGLEDEL-a#10,SINGLEDEL]
    21  2:
    22    000005:[a#9,SET-a#9,SET]
    23  3:
    24    000006:[a#8,DEL-a#8,DEL]
    25  4:
    26    000007:[a#7,SET-a#7,SET]
    27  5:
    28    000008:[a#6,SET-a#6,SET]
    29  
    30  # No data.
    31  iter
    32  first
    33  ----
    34  .
    35  
    36  # Compact away the DEL.
    37  compact a-b L2
    38  ----
    39  1:
    40    000004:[a#10,SINGLEDEL-a#10,SINGLEDEL]
    41  3:
    42    000009:[a#9,SET-a#9,SET]
    43  4:
    44    000007:[a#7,SET-a#7,SET]
    45  5:
    46    000008:[a#6,SET-a#6,SET]
    47  
    48  # No data.
    49  iter
    50  first
    51  ----
    52  .
    53  
    54  # Do two compactions to compact away the SINGLEDEL and 1 SET.
    55  compact a-b L1
    56  ----
    57  2:
    58    000010:[a#10,SINGLEDEL-a#10,SINGLEDEL]
    59  3:
    60    000009:[a#9,SET-a#9,SET]
    61  4:
    62    000007:[a#7,SET-a#7,SET]
    63  5:
    64    000008:[a#6,SET-a#6,SET]
    65  
    66  compact a-b L2
    67  ----
    68  4:
    69    000007:[a#7,SET-a#7,SET]
    70  5:
    71    000008:[a#6,SET-a#6,SET]
    72  
    73  # Deleted data reappears.
    74  iter
    75  first
    76  ----
    77  a: (v2, .)