build block-size=28 collectors=(suffix) a@5.SET.1:15 b@2.SET.2:86 c@9.SET.3:72 d@3.SET.4:21 e@2.SET.5:47 f@0.SET.6:54 g@8.SET.7:63 h@3.SET.8:38 ---- point: [a@5#1,1,h@3#8,1] rangedel: [#0,0,#0,0] rangekey: [#0,0,#0,0] seqnums: [1,8] collectors ---- 0: suffix table-props ---- 0: [0, 10) block-props ---- c#72057594037927935,17: 0: [2, 6) e#72057594037927935,17: 0: [3, 10) g#72057594037927935,17: 0: [0, 3) i#72057594037927935,17: 0: [3, 9) # Test an interator with a bound-limited filter that has a filtering criteria # too narrow to exclude any blocks. iter filter=(suffix,1,20) first next next next next next next next next ---- filter.Intersects([2, 6)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([3, 10)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([0, 3)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([3, 9)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false . MaybeFilteredKeys()=false # Test an interator with a bound-limited filter that excludes one block, the # third block. iter filter=(suffix,3,20) first next next next next next next ---- filter.Intersects([2, 6)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([3, 10)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([0, 3)) = (false, ) filter.KeyIsWithinUpperBound(g) = true filter.Intersects([3, 9)) = (true, ) MaybeFilteredKeys()=true MaybeFilteredKeys()=false . MaybeFilteredKeys()=false # Test the same case but with an upper bound set that prevents skipping the # block. iter filter=(suffix,3,20) filter-upper=f@9 first next next next next next next next next ---- filter.Intersects([2, 6)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([3, 10)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([0, 3)) = (false, ) filter.KeyIsWithinUpperBound(g) = false MaybeFilteredKeys()=false MaybeFilteredKeys()=false filter.Intersects([3, 9)) = (true, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false . MaybeFilteredKeys()=false # Test a case that filters the first two blocks. The third block is not filtered # due to block-property intersection. The fourth block is not filtered due to # the upper bound. iter filter=(suffix,0,1) filter-upper=h@6 first next next next next ---- filter.Intersects([2, 6)) = (false, ) filter.KeyIsWithinUpperBound(c) = true filter.Intersects([3, 10)) = (false, ) filter.KeyIsWithinUpperBound(e) = true filter.Intersects([0, 3)) = (true, ) MaybeFilteredKeys()=true MaybeFilteredKeys()=false filter.Intersects([3, 9)) = (false, ) filter.KeyIsWithinUpperBound(i) = false MaybeFilteredKeys()=false MaybeFilteredKeys()=false . MaybeFilteredKeys()=false # Test a similar case in reverse. In reverse if the very first block is reached, # we do not know whether or not it's actually within the bounds because we don't # have another index separator to bound the block. As such, there's no call to # KeyIsWithinLowerBound for the first block of the sstable [ie, the last one # visited by the iterator]. iter filter=(suffix,9,10) filter-lower=a@0 last prev prev prev prev ---- filter.Intersects([3, 9)) = (false, ) filter.KeyIsWithinLowerBound(g) = true filter.Intersects([0, 3)) = (false, ) filter.KeyIsWithinLowerBound(e) = true filter.Intersects([3, 10)) = (true, ) MaybeFilteredKeys()=true MaybeFilteredKeys()=false filter.Intersects([2, 6)) = (false, ) MaybeFilteredKeys()=false MaybeFilteredKeys()=false . MaybeFilteredKeys()=false # Add tests with other non-limited filters set, including one with the same # Name.