github.com/cockroachdb/pebble@v1.1.2/internal/rangekey/testdata/coalesce (about) 1 # All disjoint RANGEKEYSETs. 2 3 coalesce 4 a-c:{(#10,RANGEKEYSET,@5,foo)} 5 ---- 6 a-c:{(#10,RANGEKEYSET,@5,foo)} 7 8 coalesce 9 c-d:{(#4,RANGEKEYSET,@3,foo)} 10 ---- 11 c-d:{(#4,RANGEKEYSET,@3,foo)} 12 13 coalesce 14 e-f:{(#20,RANGEKEYSET,@5,bar) (#20,RANGEKEYSET,@3,foo)} 15 ---- 16 e-f:{(#20,RANGEKEYSET,@5,bar) (#20,RANGEKEYSET,@3,foo)} 17 18 # Merge overlapping RANGEKEYSETs. 19 20 coalesce 21 a-c:{(#10,RANGEKEYSET,@5,foo5) (#4,RANGEKEYSET,@3,foo3) (#4,RANGEKEYSET,@2,foo2)} 22 ---- 23 a-c:{(#10,RANGEKEYSET,@5,foo5) (#4,RANGEKEYSET,@3,foo3) (#4,RANGEKEYSET,@2,foo2)} 24 25 # RANGEKEYUNSETs. 26 27 coalesce 28 a-c:{(#10,RANGEKEYUNSET,@5)} 29 ---- 30 a-c:{(#10,RANGEKEYUNSET,@5)} 31 32 coalesce 33 c-d:{(#4,RANGEKEYUNSET,@3)} 34 ---- 35 c-d:{(#4,RANGEKEYUNSET,@3)} 36 37 coalesce 38 e-f:{(#20,RANGEKEYUNSET,@5) (#20,RANGEKEYUNSET,@3)} 39 ---- 40 e-f:{(#20,RANGEKEYUNSET,@5) (#20,RANGEKEYUNSET,@3)} 41 42 # Merge overlapping RANGEKEYUNSETs. 43 44 coalesce 45 a-c:{(#10,RANGEKEYUNSET,@5) (#4,RANGEKEYUNSET,@3) (#4,RANGEKEYUNSET,@2)} 46 ---- 47 a-c:{(#10,RANGEKEYUNSET,@5) (#4,RANGEKEYUNSET,@3) (#4,RANGEKEYUNSET,@2)} 48 49 # Unsets may partially remove sets. 50 51 coalesce 52 a-c:{(#10,RANGEKEYUNSET,@100) (#9,RANGEKEYSET,@100,v100) (#9,RANGEKEYSET,@50,v50)} 53 ---- 54 a-c:{(#10,RANGEKEYUNSET,@100) (#9,RANGEKEYSET,@50,v50)} 55 56 coalesce 57 c-d:{(#9,RANGEKEYSET,@100,v100) (#9,RANGEKEYSET,@50,v50)} 58 ---- 59 c-d:{(#9,RANGEKEYSET,@100,v100) (#9,RANGEKEYSET,@50,v50)} 60 61 # Unsets may wholly remove sets. 62 63 coalesce 64 b-c:{(#10,RANGEKEYUNSET,@3) (#10,RANGEKEYUNSET,@2) (#10,RANGEKEYUNSET,@1) (#8,RANGEKEYSET,@3,v3) (#8,RANGEKEYSET,@2,v2) (#8,RANGEKEYSET,@1,v1)} 65 ---- 66 b-c:{(#10,RANGEKEYUNSET,@3) (#10,RANGEKEYUNSET,@2) (#10,RANGEKEYUNSET,@1)} 67 68 # Sets may shadow unsets. 69 70 coalesce 71 a-c:{(#5,RANGEKEYSET,@5,v5) (#4,RANGEKEYUNSET,@5)} 72 ---- 73 a-c:{(#5,RANGEKEYSET,@5,v5)} 74 75 # Deletes shadow Sets and Unsets, but not at the same sequence number. 76 77 coalesce 78 a-c:{(#10,RANGEKEYSET,@5,foo5) (#10,RANGEKEYDEL) (#8,RANGEKEYUNSET,@1) (#4,RANGEKEYSET,@3,foo3) (#4,RANGEKEYSET,@2,foo2)} 79 ---- 80 a-c:{(#10,RANGEKEYSET,@5,foo5) (#10,RANGEKEYDEL)} 81 82 # Within a sequence number, none of the internal range keys affect one another. 83 84 coalesce 85 a-c:{(#5,RANGEKEYSET,@5,foo) (#5,RANGEKEYUNSET,@5) (#5,RANGEKEYDEL)} 86 ---- 87 a-c:{(#5,RANGEKEYSET,@5,foo) (#5,RANGEKEYDEL)}