github.com/zuoyebang/bitalostable@v1.0.1-0.20240229032404-e3b99a834294/sstable/testdata/writer_range_keys (about)

     1  # NOTE: The operations SET, UNSET, and DEL in this test file are aliases for
     2  # RANGEKEYSET, RANGEKEYUNSET and RANGEKEYDEL, respectively.
     3  
     4  # Keys must be added in order of start key.
     5  
     6  build
     7  SET b-d @3=foo
     8  SET a-c @5=bar
     9  ----
    10  bitalostable: spans must be added in order: b > a
    11  
    12  # All disjoint RANGEKEYSETs.
    13  #
    14  #  ^
    15  #  |                •―――○    [e,f) SET @3=baz
    16  #  |        •―――○            [c,d) SET @2=bar
    17  #  |•―――――――○                [a,c) SET @1=foo
    18  #  |___________________________________
    19  #   a   b   c   d   e   f   g   h   i
    20  
    21  build
    22  SET a-c @1=foo
    23  SET c-d @2=bar
    24  SET e-f @3=baz
    25  ----
    26  a-c:{(#0,RANGEKEYSET,@1,foo)}
    27  c-d:{(#0,RANGEKEYSET,@2,bar)}
    28  e-f:{(#0,RANGEKEYSET,@3,baz)}
    29  
    30  # Merge aligned RANGEKEYSETs.
    31  #
    32  #  ^
    33  #  |•―――――――○    [a,c) SET @3=baz
    34  #  |•―――――――○    [a,c) SET @1=bar
    35  #  |•―――――――○    [a,c) SET @2=foo
    36  #  |___________________________________
    37  #   a   b   c   d   e   f   g   h   i
    38  #
    39  # Note that suffixes are sorted in descending order of the timestamp value in
    40  # the suffix, rather than in lexical order.
    41  
    42  build
    43  SET a-c @2=foo
    44  SET a-c @1=bar
    45  SET a-c @3=baz
    46  ----
    47  a-c:{(#0,RANGEKEYSET,@3,baz) (#0,RANGEKEYSET,@2,foo) (#0,RANGEKEYSET,@1,bar)}
    48  
    49  # Aligned spans, mixed range key kinds.
    50  #
    51  #  ^
    52  #  |                    •―――――――――――○    [f,i) DEL
    53  #  |                    •―――――――――――○    [f,i) SET   @9=v9
    54  #  |                    •―――――――――――○    [f,i) SET   @8=v8
    55  #  |                    •―――――――――――○    [f,i) SET   @7=v7
    56  #  |                    •―――――――――――○    [f,i) UNSET @6
    57  #  |                    •―――――――――――○    [f,i) SET   @5=v5
    58  #  |                    •―――――――――――○    [f,i) SET   @4=v4
    59  #  |            •―――○                    [d,e) SET   @9=v9
    60  #  |            •―――○                    [d,e) DEL
    61  #  |        •―――○                        [c,d) SET   @5=v5
    62  #  |        •―――○                        [c,d) SET   @2=v2
    63  #  |•―――――――○                            [a,c) UNSET @5
    64  #  |•―――――――○                            [a,c) SET   @1=v1
    65  #  |___________________________________
    66  #   a   b   c   d   e   f   g   h   i
    67  
    68  build
    69  SET a-c @1=v1
    70  UNSET a-c @5
    71  SET c-d @2=v2
    72  SET c-d @5=v5
    73  DEL d-e
    74  SET d-e @9=v9
    75  SET f-i @4=v4
    76  SET f-i @5=v5
    77  UNSET f-i @6
    78  SET f-i @7=v7
    79  SET f-i @8=v8
    80  SET f-i @9=v9
    81  DEL f-i
    82  ----
    83  a-c:{(#0,RANGEKEYSET,@1,v1) (#0,RANGEKEYUNSET,@5)}
    84  c-d:{(#0,RANGEKEYSET,@5,v5) (#0,RANGEKEYSET,@2,v2)}
    85  d-e:{(#0,RANGEKEYSET,@9,v9) (#0,RANGEKEYDEL)}
    86  f-i:{(#0,RANGEKEYSET,@9,v9) (#0,RANGEKEYSET,@8,v8) (#0,RANGEKEYSET,@7,v7) (#0,RANGEKEYSET,@5,v5) (#0,RANGEKEYSET,@4,v4) (#0,RANGEKEYUNSET,@6) (#0,RANGEKEYDEL)}
    87  
    88  # Merge overlapping RANGEKEYSETs.
    89  #
    90  #  ^
    91  #  |        •―――○           [c,d) SET @3=baz
    92  #  |    •―――――――――――――――○   [b,f) SET @2=bar
    93  #  |•―――――――○               [a,c) SET @1=foo
    94  #  |___________________________________
    95  #   a   b   c   d   e   f
    96  
    97  build
    98  SET a-c @1=foo
    99  SET b-f @2=bar
   100  SET c-d @3=baz
   101  ----
   102  a-b:{(#0,RANGEKEYSET,@1,foo)}
   103  b-c:{(#0,RANGEKEYSET,@2,bar) (#0,RANGEKEYSET,@1,foo)}
   104  c-d:{(#0,RANGEKEYSET,@3,baz) (#0,RANGEKEYSET,@2,bar)}
   105  d-f:{(#0,RANGEKEYSET,@2,bar)}
   106  
   107  # Overlapping spans, mixed range keys kinds.
   108  #
   109  #  ^
   110  #  |                      •―――――○     [l,o) DEL
   111  #  |        •―――――――――――――――――――――――○ [e,q) SET   @4=baz
   112  #  |    •―○                           [c,d) DEL
   113  #  |    •―――――――――○                   [c,h) UNSET @3
   114  #  |  •―○                             [b,c) SET   @2=bar
   115  #  |•―――――――――――――――○                 [a,i) SET   @1=foo
   116  #  |___________________________________
   117  #   a b c d e f g h i j k l m n o p q
   118  
   119  build
   120  SET a-i @1=foo
   121  SET b-c @2=bar
   122  UNSET c-h @3
   123  DEL c-d
   124  SET e-q @4=baz
   125  DEL l-o
   126  ----
   127  a-b:{(#0,RANGEKEYSET,@1,foo)}
   128  b-c:{(#0,RANGEKEYSET,@2,bar) (#0,RANGEKEYSET,@1,foo)}
   129  c-d:{(#0,RANGEKEYSET,@1,foo) (#0,RANGEKEYUNSET,@3) (#0,RANGEKEYDEL)}
   130  d-e:{(#0,RANGEKEYSET,@1,foo) (#0,RANGEKEYUNSET,@3)}
   131  e-h:{(#0,RANGEKEYSET,@4,baz) (#0,RANGEKEYSET,@1,foo) (#0,RANGEKEYUNSET,@3)}
   132  h-i:{(#0,RANGEKEYSET,@4,baz) (#0,RANGEKEYSET,@1,foo)}
   133  i-l:{(#0,RANGEKEYSET,@4,baz)}
   134  l-o:{(#0,RANGEKEYSET,@4,baz) (#0,RANGEKEYDEL)}
   135  o-q:{(#0,RANGEKEYSET,@4,baz)}
   136  
   137  build
   138  UNSET a-b @1
   139  SET a-b @1=foo
   140  ----
   141  a-b:{(#0,RANGEKEYSET,@1,foo)}
   142  
   143  # Within the same fragmented span, key kinds do not affect one another. SETs and
   144  # DELs will have their own records. A SET will eliminate an UNSET as the former
   145  # sorts before the latter in a fragmented and coalesced span with the same
   146  # sequence number.
   147  #
   148  #  ^
   149  #  |        •―――――――○        [c,e) SET   @2=bar
   150  #  |    •―――――――○            [b,d) UNSET @2
   151  #  |    •―――――――○            [b,d) UNSET @1
   152  #  |•―――――――○                [a,c) SET   @1=foo
   153  #  |___________________________________
   154  #   a   b   c   d   e   f   g   h   i
   155  
   156  build
   157  SET a-c @1=foo
   158  UNSET b-d @1
   159  UNSET b-d @2
   160  SET c-e @2=bar
   161  ----
   162  a-b:{(#0,RANGEKEYSET,@1,foo)}
   163  b-c:{(#0,RANGEKEYSET,@1,foo) (#0,RANGEKEYUNSET,@2)}
   164  c-d:{(#0,RANGEKEYSET,@2,bar) (#0,RANGEKEYUNSET,@1)}
   165  d-e:{(#0,RANGEKEYSET,@2,bar)}