github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/clients/spark/src/test/resources/pebble-testdata/reader/iter (about)

     1  build
     2  a.SET.1:A
     3  b.SET.2:B
     4  c.SET.3:C
     5  d.SET.4:D
     6  ----
     7  
     8  iter
     9  first
    10  next
    11  next
    12  next
    13  next
    14  ----
    15  <a:1>
    16  <b:2>
    17  <c:3>
    18  <d:4>
    19  .
    20  
    21  iter
    22  seek-ge a
    23  next
    24  next
    25  next
    26  next
    27  ----
    28  <a:1>
    29  <b:2>
    30  <c:3>
    31  <d:4>
    32  .
    33  
    34  iter
    35  seek-ge b
    36  next
    37  next
    38  next
    39  ----
    40  <b:2>
    41  <c:3>
    42  <d:4>
    43  .
    44  
    45  iter
    46  seek-ge c
    47  next
    48  next
    49  ----
    50  <c:3>
    51  <d:4>
    52  .
    53  
    54  iter
    55  seek-ge d
    56  next
    57  ----
    58  <d:4>
    59  .
    60  
    61  iter
    62  seek-ge e
    63  ----
    64  .
    65  
    66  iter
    67  seek-ge d
    68  seek-ge z
    69  ----
    70  <d:4>
    71  .
    72  
    73  iter
    74  seek-ge b
    75  seek-ge c
    76  seek-ge d
    77  seek-ge e
    78  ----
    79  <b:2>
    80  <c:3>
    81  <d:4>
    82  .
    83  
    84  iter
    85  last
    86  prev
    87  prev
    88  prev
    89  prev
    90  ----
    91  <d:4>
    92  <c:3>
    93  <b:2>
    94  <a:1>
    95  .
    96  
    97  iter
    98  seek-lt e
    99  prev
   100  prev
   101  prev
   102  prev
   103  ----
   104  <d:4>
   105  <c:3>
   106  <b:2>
   107  <a:1>
   108  .
   109  
   110  iter
   111  seek-lt d
   112  prev
   113  prev
   114  prev
   115  ----
   116  <c:3>
   117  <b:2>
   118  <a:1>
   119  .
   120  
   121  iter
   122  seek-lt c
   123  prev
   124  prev
   125  ----
   126  <b:2>
   127  <a:1>
   128  .
   129  
   130  iter
   131  seek-lt b
   132  prev
   133  ----
   134  <a:1>
   135  .
   136  
   137  iter
   138  seek-lt a
   139  ----
   140  .
   141  
   142  iter
   143  seek-lt d
   144  seek-lt c
   145  seek-lt b
   146  seek-lt a
   147  ----
   148  <c:3>
   149  <b:2>
   150  <a:1>
   151  .
   152  
   153  iter globalSeqNum=1
   154  first
   155  next
   156  next
   157  next
   158  next
   159  ----
   160  <a:1>
   161  <b:1>
   162  <c:1>
   163  <d:1>
   164  .
   165  
   166  iter globalSeqNum=10
   167  first
   168  next
   169  next
   170  next
   171  next
   172  ----
   173  <a:10>
   174  <b:10>
   175  <c:10>
   176  <d:10>
   177  .
   178  
   179  iter globalSeqNum=0
   180  seek-lt x
   181  ----
   182  <d:4>
   183  
   184  get
   185  b
   186  a
   187  f
   188  d
   189  c
   190  ----
   191  B
   192  A
   193  <err: pebble: not found>
   194  D
   195  C
   196  
   197  # Verify that clearing the bounds on an iterator also clears
   198  # previously set block{Lower,Upper}.
   199  
   200  iter
   201  seek-ge c
   202  seek-lt b
   203  set-bounds lower=b upper=c
   204  seek-ge c
   205  seek-lt b
   206  set-bounds lower= upper=
   207  seek-ge c
   208  seek-lt b
   209  ----
   210  <c:3>
   211  <a:1>
   212  .
   213  .
   214  .
   215  .
   216  <c:3>
   217  <a:1>
   218  
   219  # Verify that seeking past the end of the sstable leaves the iterator
   220  # in a state where prev returns the last key in the table.
   221  
   222  iter
   223  seek-lt d
   224  seek-ge f
   225  prev
   226  ----
   227  <c:3>
   228  .
   229  <d:4>
   230  
   231  # Verify that seeking before the beginning of the sstable leaves the
   232  # iterator in a state where next returns the first key in the table.
   233  
   234  iter
   235  seek-ge b
   236  seek-lt a
   237  next
   238  ----
   239  <b:2>
   240  .
   241  <a:1>
   242  
   243  # Verify that iteration from before the beginning or after the end of
   244  # the sstable does not "wrap around". A bug previously allowed this to
   245  # happen by letting the data block iterator and index iterator get out
   246  # of sync.
   247  
   248  build
   249  a.SET.1:a
   250  ----
   251  
   252  iter
   253  first
   254  prev
   255  next
   256  next
   257  next
   258  ----
   259  <a:1>
   260  .
   261  <a:1>
   262  .
   263  .
   264  
   265  iter
   266  last
   267  next
   268  prev
   269  prev
   270  prev
   271  ----
   272  <a:1>
   273  .
   274  <a:1>
   275  .
   276  .
   277  
   278  # Build a sufficiently large SST to enable two-level indexes.
   279  
   280  build
   281  a.SET.1:A
   282  aae.SET.1:E
   283  aaf.SET.1:F
   284  aag.SET.1:G
   285  aah.SET.1:H
   286  aai.SET.1:I
   287  aaj.SET.1:J
   288  aak.SET.1:K
   289  aal.SET.1:L
   290  aam.SET.1:M
   291  aan.SET.1:N
   292  aao.SET.1:O
   293  aap.SET.1:P
   294  aaq.SET.1:Q
   295  aar.SET.1:R
   296  aas.SET.1:S
   297  aat.SET.1:T
   298  aau.SET.1:U
   299  aav.SET.1:V
   300  aaw.SET.1:W
   301  aax.SET.1:X
   302  aay.SET.1:Y
   303  aaz.SET.1:Z
   304  b.SET.2:B
   305  bbe.SET.2:E
   306  bbf.SET.2:F
   307  bbg.SET.2:G
   308  bbh.SET.2:H
   309  bbi.SET.2:I
   310  bbj.SET.2:J
   311  bbk.SET.2:K
   312  bbl.SET.2:L
   313  bbm.SET.2:M
   314  bbn.SET.2:N
   315  bbo.SET.2:O
   316  bbp.SET.2:P
   317  bbq.SET.2:Q
   318  bbr.SET.2:R
   319  bbs.SET.2:S
   320  bbt.SET.2:T
   321  bbu.SET.2:U
   322  bbv.SET.2:V
   323  bbw.SET.2:W
   324  bbx.SET.2:X
   325  bby.SET.2:Y
   326  bbz.SET.2:Z
   327  c.SET.3:C
   328  cc.RANGEDEL.3:ccc
   329  cce.SET.3:E
   330  ccf.SET.3:F
   331  ccg.SET.3:G
   332  cch.SET.3:H
   333  cci.SET.3:I
   334  ccj.SET.3:J
   335  cck.SET.3:K
   336  ccl.SET.3:L
   337  ccm.SET.3:M
   338  ccn.SET.3:N
   339  cco.SET.3:O
   340  ccp.SET.3:P
   341  ccq.SET.3:Q
   342  ccr.SET.3:R
   343  ccs.SET.3:S
   344  cct.SET.3:T
   345  ccu.SET.3:U
   346  ccv.SET.3:V
   347  ccw.SET.3:W
   348  ccx.SET.3:X
   349  ccy.SET.3:Y
   350  ccz.SET.3:Z
   351  d.SET.4:D
   352  dd.RANGEDEL.4:ddd
   353  dde.SET.4:E
   354  ddf.SET.4:F
   355  ddg.SET.4:G
   356  ddh.SET.4:H
   357  ddi.SET.4:I
   358  ddj.SET.4:J
   359  ddk.SET.4:K
   360  ddl.SET.4:L
   361  ddm.SET.4:M
   362  ddn.SET.4:N
   363  ddo.SET.4:O
   364  ddp.SET.4:P
   365  ddq.SET.4:Q
   366  ddr.SET.4:R
   367  dds.SET.4:S
   368  ddt.SET.4:T
   369  ddu.SET.4:U
   370  ddv.SET.4:V
   371  ddw.SET.4:W
   372  ddx.SET.4:X
   373  ddy.SET.4:Y
   374  ddz.SET.4:Z
   375  ----
   376  
   377  iter
   378  first
   379  prev
   380  next
   381  next
   382  next
   383  next
   384  next
   385  ----
   386  <a:1>
   387  .
   388  <a:1>
   389  <aae:1>
   390  <aaf:1>
   391  <aag:1>
   392  <aah:1>
   393  
   394  iter
   395  last
   396  next
   397  prev
   398  prev
   399  prev
   400  ----
   401  <ddz:4>
   402  .
   403  <ddz:4>
   404  <ddy:4>
   405  <ddx:4>
   406  
   407  iter
   408  first
   409  prev
   410  next
   411  next
   412  seek-ge x
   413  prev
   414  prev
   415  ----
   416  <a:1>
   417  .
   418  <a:1>
   419  <aae:1>
   420  .
   421  <ddz:4>
   422  <ddy:4>
   423  
   424  iter
   425  first
   426  prev
   427  next
   428  next
   429  seek-prefix-ge x
   430  prev
   431  prev
   432  ----
   433  <a:1>
   434  .
   435  <a:1>
   436  <aae:1>
   437  .
   438  .
   439  .
   440  
   441  iter
   442  last
   443  next
   444  prev
   445  prev
   446  seek-lt a
   447  next
   448  next
   449  ----
   450  <ddz:4>
   451  .
   452  <ddz:4>
   453  <ddy:4>
   454  .
   455  <a:1>
   456  <aae:1>
   457  
   458  # Test that SeekPrefixGE does not position the iterator far outside the iterator bounds.
   459  # Doing so would break the subsequent SeekGE that is utilizing the next instead of seek
   460  # optimization.
   461  iter
   462  set-bounds lower=a upper=aae
   463  seek-ge a
   464  seek-prefix-ge aad
   465  set-bounds lower=aae upper=b
   466  seek-ge aae
   467  next
   468  ----
   469  .
   470  <a:1>
   471  .
   472  .
   473  <aae:1>
   474  <aaf:1>
   475  
   476  # Test that using Next does not mislead a twoLevelIterator into believing that the
   477  # iterator has been positioned based on the latest iterator bounds. The Next call
   478  # immediately after SetBounds has a non-deterministic result, hence we use
   479  # next-ignore-result.
   480  iter
   481  set-bounds lower=bbq upper=d
   482  seek-ge bbq
   483  set-bounds lower=b upper=bbf
   484  next-ignore-result
   485  set-bounds lower=bbf upper=c
   486  seek-ge bbf
   487  next
   488  ----
   489  .
   490  <bbq:2>
   491  .
   492  .
   493  .
   494  <bbf:2>
   495  <bbg:2>