github.com/cockroachdb/pebble@v1.1.1-0.20240513155919-3622ade60459/testdata/singledel_manual_compaction_set_with_del (about) 1 # This is not actually a manual compaction test, and simply uses manual 2 # compaction to demonstrate single delete semantics when used with 3 # set-with-delete. 4 5 # Define a sequence of SET=>SET=>DEL=>SET=>SINGLEDEL. 6 define target-file-sizes=(1, 1, 1, 1, 1) 7 L1 8 a.SINGLEDEL.10: 9 L2 10 a.SET.9:v3 11 L3 12 a.DEL.8: 13 L4 14 a.SET.7:v2 15 L5 16 a.SET.6:v1 17 ---- 18 1: 19 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 20 2: 21 000005:[a#9,SET-a#9,SET] 22 3: 23 000006:[a#8,DEL-a#8,DEL] 24 4: 25 000007:[a#7,SET-a#7,SET] 26 5: 27 000008:[a#6,SET-a#6,SET] 28 29 # No data. 30 iter 31 first 32 ---- 33 . 34 35 # Compact away the DEL. 36 compact a-b L2 37 ---- 38 1: 39 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 40 3: 41 000009:[a#9,SETWITHDEL-a#9,SETWITHDEL] 42 4: 43 000007:[a#7,SET-a#7,SET] 44 5: 45 000008:[a#6,SET-a#6,SET] 46 47 # No data. 48 iter 49 first 50 ---- 51 . 52 53 # Do two compactions to compact away the SINGLEDEL and 1 SET. 54 compact a-b L1 55 ---- 56 2: 57 000010:[a#10,SINGLEDEL-a#10,SINGLEDEL] 58 3: 59 000009:[a#9,SETWITHDEL-a#9,SETWITHDEL] 60 4: 61 000007:[a#7,SET-a#7,SET] 62 5: 63 000008:[a#6,SET-a#6,SET] 64 65 compact a-b L2 66 ---- 67 3: 68 000011:[a#10,DEL-a#10,DEL] 69 4: 70 000007:[a#7,SET-a#7,SET] 71 5: 72 000008:[a#6,SET-a#6,SET] 73 74 # Deleted data is not resurrected. 75 iter 76 first 77 ---- 78 . 79 80 # Define a sequence of SET=>SINGLEDEL=>SET=>SINGLEDEL. 81 define target-file-sizes=(1, 1, 1, 1, 1) 82 L1 83 a.SINGLEDEL.10: 84 L2 85 a.SET.9:v3 86 L3 87 a.SINGLEDEL.8: 88 L4 89 a.SET.7:v2 90 ---- 91 1: 92 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 93 2: 94 000005:[a#9,SET-a#9,SET] 95 3: 96 000006:[a#8,SINGLEDEL-a#8,SINGLEDEL] 97 4: 98 000007:[a#7,SET-a#7,SET] 99 100 # No data. 101 iter 102 first 103 ---- 104 . 105 106 # Compact away the older SINGLEDEL. 107 compact a-b L2 108 ---- 109 1: 110 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 111 3: 112 000008:[a#9,SETWITHDEL-a#9,SETWITHDEL] 113 4: 114 000007:[a#7,SET-a#7,SET] 115 116 # No data. 117 iter 118 first 119 ---- 120 . 121 122 # Do two compactions to compact away the newer SINGLEDEL and 1 SET. 123 compact a-b L1 124 ---- 125 2: 126 000009:[a#10,SINGLEDEL-a#10,SINGLEDEL] 127 3: 128 000008:[a#9,SETWITHDEL-a#9,SETWITHDEL] 129 4: 130 000007:[a#7,SET-a#7,SET] 131 132 compact a-b L2 133 ---- 134 3: 135 000010:[a#10,DEL-a#10,DEL] 136 4: 137 000007:[a#7,SET-a#7,SET] 138 139 # Deleted data is not resurrected. 140 iter 141 first 142 ---- 143 . 144 145 # Define a sequence of SET=>DEL=>SET=>SINGLEDEL, such that the DEL and 146 # SINGLEDEL meet in a compaction. Disable multilevel compaction to exercise the proper test case. 147 define snapshots=(9) disable-multi-level 148 L1 149 a.SINGLEDEL.10: 150 L2 151 a.SET.9:v3 152 L3 153 a.DEL.8: 154 L4 155 a.SET.7:v2 156 ---- 157 1: 158 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 159 2: 160 000005:[a#9,SET-a#9,SET] 161 3: 162 000006:[a#8,DEL-a#8,DEL] 163 4: 164 000007:[a#7,SET-a#7,SET] 165 166 # No data. 167 iter 168 first 169 ---- 170 . 171 172 # Compact L2 and L3. The snapshot prevents the DEL=>SET from being collapsed. 173 compact a-b L2 174 ---- 175 1: 176 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 177 3: 178 000008:[a#9,SET-a#8,DEL] 179 4: 180 000007:[a#7,SET-a#7,SET] 181 182 # No data. 183 iter 184 first 185 ---- 186 . 187 188 close-snapshots 189 ---- 190 191 compact a-b L1 192 ---- 193 2: 194 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 195 3: 196 000008:[a#9,SET-a#8,DEL] 197 4: 198 000007:[a#7,SET-a#7,SET] 199 200 # The DEL survives. 201 compact a-b L2 202 ---- 203 3: 204 000009:[a#8,DEL-a#8,DEL] 205 4: 206 000007:[a#7,SET-a#7,SET] 207 208 # No data 209 iter 210 first 211 ---- 212 . 213 214 # Define a sequence of SET=>SINGLEDEL=>SET=>SINGLEDEL, such that the two 215 # SINGLEDELs meet in a compaction. 216 # To test surface the right test case, disable multi level compaction. 217 define snapshots=(9) disable-multi-level 218 L1 219 a.SINGLEDEL.10: 220 L2 221 a.SET.9:v3 222 L3 223 a.SINGLEDEL.8: 224 L4 225 a.SET.7:v2 226 ---- 227 1: 228 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 229 2: 230 000005:[a#9,SET-a#9,SET] 231 3: 232 000006:[a#8,SINGLEDEL-a#8,SINGLEDEL] 233 4: 234 000007:[a#7,SET-a#7,SET] 235 236 # No data. 237 iter 238 first 239 ---- 240 . 241 242 # Compact L2 and L3. The snapshot prevents the SINGLEDEL=>SET from being collapsed. 243 compact a-b L2 244 ---- 245 1: 246 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 247 3: 248 000008:[a#9,SET-a#8,SINGLEDEL] 249 4: 250 000007:[a#7,SET-a#7,SET] 251 252 # No data. 253 iter 254 first 255 ---- 256 . 257 258 close-snapshots 259 ---- 260 261 compact a-b L1 262 ---- 263 2: 264 000004:[a#10,SINGLEDEL-a#10,SINGLEDEL] 265 3: 266 000008:[a#9,SET-a#8,SINGLEDEL] 267 4: 268 000007:[a#7,SET-a#7,SET] 269 270 # The SINGLEDEL survives. 271 compact a-b L2 272 ---- 273 3: 274 000009:[a#8,SINGLEDEL-a#8,SINGLEDEL] 275 4: 276 000007:[a#7,SET-a#7,SET] 277 278 # No data 279 iter 280 first 281 ---- 282 .