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

     1  build block-size=28 collectors=(suffix)
     2  a@5.SET.1:15
     3  b@2.SET.2:86
     4  c@9.SET.3:72
     5  d@3.SET.4:21
     6  e@2.SET.5:47
     7  f@0.SET.6:54
     8  g@8.SET.7:63
     9  h@3.SET.8:38
    10  ----
    11  point:    [a@5#1,1,h@3#8,1]
    12  rangedel: [#0,0,#0,0]
    13  rangekey: [#0,0,#0,0]
    14  seqnums:  [1,8]
    15  
    16  collectors
    17  ----
    18  0: suffix
    19  
    20  table-props
    21  ----
    22  0: [0, 10)
    23  
    24  block-props
    25  ----
    26  c#72057594037927935,17:
    27    0: [2, 6)
    28  e#72057594037927935,17:
    29    0: [3, 10)
    30  g#72057594037927935,17:
    31    0: [0, 3)
    32  i#72057594037927935,17:
    33    0: [3, 9)
    34  
    35  # Test an interator with a bound-limited filter that has a filtering criteria
    36  # too narrow to exclude any blocks.
    37  
    38  iter filter=(suffix,1,20)
    39  first
    40  next
    41  next
    42  next
    43  next
    44  next
    45  next
    46  next
    47  next
    48  ----
    49      filter.Intersects([2, 6)) = (true, <nil>)
    50  <a@5:1> MaybeFilteredKeys()=false
    51  <b@2:2> MaybeFilteredKeys()=false
    52      filter.Intersects([3, 10)) = (true, <nil>)
    53  <c@9:3> MaybeFilteredKeys()=false
    54  <d@3:4> MaybeFilteredKeys()=false
    55      filter.Intersects([0, 3)) = (true, <nil>)
    56  <e@2:5> MaybeFilteredKeys()=false
    57  <f@0:6> MaybeFilteredKeys()=false
    58      filter.Intersects([3, 9)) = (true, <nil>)
    59  <g@8:7> MaybeFilteredKeys()=false
    60  <h@3:8> MaybeFilteredKeys()=false
    61  . MaybeFilteredKeys()=false
    62  
    63  # Test an interator with a bound-limited filter that excludes one block, the
    64  # third block.
    65  
    66  iter filter=(suffix,3,20)
    67  first
    68  next
    69  next
    70  next
    71  next
    72  next
    73  next
    74  ----
    75      filter.Intersects([2, 6)) = (true, <nil>)
    76  <a@5:1> MaybeFilteredKeys()=false
    77  <b@2:2> MaybeFilteredKeys()=false
    78      filter.Intersects([3, 10)) = (true, <nil>)
    79  <c@9:3> MaybeFilteredKeys()=false
    80  <d@3:4> MaybeFilteredKeys()=false
    81      filter.Intersects([0, 3)) = (false, <nil>)
    82      filter.KeyIsWithinUpperBound(g) = true
    83      filter.Intersects([3, 9)) = (true, <nil>)
    84  <g@8:7> MaybeFilteredKeys()=true
    85  <h@3:8> MaybeFilteredKeys()=false
    86  . MaybeFilteredKeys()=false
    87  
    88  # Test the same case but with an upper bound set that prevents skipping the
    89  # block.
    90  
    91  iter filter=(suffix,3,20) filter-upper=f@9
    92  first
    93  next
    94  next
    95  next
    96  next
    97  next
    98  next
    99  next
   100  next
   101  ----
   102      filter.Intersects([2, 6)) = (true, <nil>)
   103  <a@5:1> MaybeFilteredKeys()=false
   104  <b@2:2> MaybeFilteredKeys()=false
   105      filter.Intersects([3, 10)) = (true, <nil>)
   106  <c@9:3> MaybeFilteredKeys()=false
   107  <d@3:4> MaybeFilteredKeys()=false
   108      filter.Intersects([0, 3)) = (false, <nil>)
   109      filter.KeyIsWithinUpperBound(g) = false
   110  <e@2:5> MaybeFilteredKeys()=false
   111  <f@0:6> MaybeFilteredKeys()=false
   112      filter.Intersects([3, 9)) = (true, <nil>)
   113  <g@8:7> MaybeFilteredKeys()=false
   114  <h@3:8> MaybeFilteredKeys()=false
   115  . MaybeFilteredKeys()=false
   116  
   117  # Test a case that filters the first two blocks. The third block is not filtered
   118  # due to block-property intersection. The fourth block is not filtered due to
   119  # the upper bound.
   120  
   121  iter filter=(suffix,0,1) filter-upper=h@6
   122  first
   123  next
   124  next
   125  next
   126  next
   127  ----
   128      filter.Intersects([2, 6)) = (false, <nil>)
   129      filter.KeyIsWithinUpperBound(c) = true
   130      filter.Intersects([3, 10)) = (false, <nil>)
   131      filter.KeyIsWithinUpperBound(e) = true
   132      filter.Intersects([0, 3)) = (true, <nil>)
   133  <e@2:5> MaybeFilteredKeys()=true
   134  <f@0:6> MaybeFilteredKeys()=false
   135      filter.Intersects([3, 9)) = (false, <nil>)
   136      filter.KeyIsWithinUpperBound(i) = false
   137  <g@8:7> MaybeFilteredKeys()=false
   138  <h@3:8> MaybeFilteredKeys()=false
   139  . MaybeFilteredKeys()=false
   140  
   141  # Test a similar case in reverse. In reverse if the very first block is reached,
   142  # we do not know whether or not it's actually within the bounds because we don't
   143  # have another index separator to bound the block. As such, there's no call to
   144  # KeyIsWithinLowerBound for the first block of the sstable [ie, the last one
   145  # visited by the iterator].
   146  
   147  iter filter=(suffix,9,10) filter-lower=a@0
   148  last
   149  prev
   150  prev
   151  prev
   152  prev
   153  ----
   154      filter.Intersects([3, 9)) = (false, <nil>)
   155      filter.KeyIsWithinLowerBound(g) = true
   156      filter.Intersects([0, 3)) = (false, <nil>)
   157      filter.KeyIsWithinLowerBound(e) = true
   158      filter.Intersects([3, 10)) = (true, <nil>)
   159  <d@3:4> MaybeFilteredKeys()=true
   160  <c@9:3> MaybeFilteredKeys()=false
   161      filter.Intersects([2, 6)) = (false, <nil>)
   162  <b@2:2> MaybeFilteredKeys()=false
   163  <a@5:1> MaybeFilteredKeys()=false
   164  . MaybeFilteredKeys()=false
   165  
   166  # Add tests with other non-limited filters set, including one with the same
   167  # Name.