github.com/cockroachdb/pebble@v1.1.1-0.20240513155919-3622ade60459/testdata/ingest_shared (about)

     1  
     2  switch 1
     3  ----
     4  ok
     5  
     6  build ext0
     7  set a 1
     8  set l 2
     9  ----
    10  
    11  ingest ext0
    12  ----
    13  
    14  lsm
    15  ----
    16  6:
    17    000004:[a#10,SET-l#10,SET]
    18  
    19  
    20  batch
    21  set d foo
    22  set f bar
    23  ----
    24  
    25  flush
    26  ----
    27  
    28  compact a-z
    29  ----
    30  ok
    31  
    32  lsm
    33  ----
    34  6:
    35    000007:[a#0,SET-l#0,SET]
    36  
    37  switch 2
    38  ----
    39  ok
    40  
    41  iter
    42  first
    43  ----
    44  .
    45  
    46  replicate 1 2 d g
    47  ----
    48  replicated 1 shared SSTs
    49  
    50  lsm
    51  ----
    52  6:
    53    000005:[d#10,SET-f#10,SET]
    54  
    55  iter
    56  first
    57  next
    58  next
    59  ----
    60  d: (foo, .)
    61  f: (bar, .)
    62  .
    63  
    64  batch
    65  set e bar
    66  set f bar2
    67  set g bar3
    68  ----
    69  
    70  iter
    71  first
    72  next
    73  next
    74  next
    75  ----
    76  d: (foo, .)
    77  e: (bar, .)
    78  f: (bar2, .)
    79  g: (bar3, .)
    80  
    81  compact a-z
    82  ----
    83  ok
    84  
    85  iter
    86  first
    87  next
    88  next
    89  next
    90  ----
    91  d: (foo, .)
    92  e: (bar, .)
    93  f: (bar2, .)
    94  g: (bar3, .)
    95  
    96  # Write a new key at f, but don't compact it down.
    97  
    98  batch
    99  set f bar3
   100  ----
   101  
   102  switch 1
   103  ----
   104  ok
   105  
   106  lsm
   107  ----
   108  6:
   109    000007:[a#0,SET-l#0,SET]
   110  
   111  excise e gg
   112  ----
   113  would excise 1 files, use ingest-and-excise to excise.
   114    deleted:       L6 000007
   115    added:         L6 000008:[a#0,1-d#0,1]
   116    added:         L6 000009:[l#0,1-l#0,1]
   117  
   118  replicate 2 1 e gg
   119  ----
   120  replicated 1 shared SSTs
   121  
   122  iter
   123  first
   124  next
   125  next
   126  next
   127  next
   128  ----
   129  a: (1, .)
   130  d: (foo, .)
   131  e: (bar, .)
   132  f: (bar3, .)
   133  g: (bar3, .)
   134  
   135  # Range key masking test. Write some masked keys, then replicate before
   136  # compacting, then compact, then replicate back.
   137  
   138  batch
   139  set h@3 foobar
   140  set i@5 baz
   141  range-key-set g j @4 value
   142  ----
   143  
   144  iter
   145  first
   146  next
   147  next
   148  next
   149  next
   150  next
   151  next
   152  next
   153  ----
   154  a: (1, .)
   155  d: (foo, .)
   156  e: (bar, .)
   157  f: (bar3, .)
   158  g: (bar3, [g-j) @4=value UPDATED)
   159  h@3: (foobar, [g-j) @4=value)
   160  i@5: (baz, [g-j) @4=value)
   161  l: (2, . UPDATED)
   162  
   163  iter mask-filter mask-suffix=@6
   164  first
   165  next
   166  next
   167  next
   168  next
   169  next
   170  next
   171  ----
   172  a: (1, .)
   173  d: (foo, .)
   174  e: (bar, .)
   175  f: (bar3, .)
   176  g: (bar3, [g-j) @4=value UPDATED)
   177  i@5: (baz, [g-j) @4=value)
   178  l: (2, . UPDATED)
   179  
   180  switch 2
   181  ----
   182  ok
   183  
   184  replicate 1 2 a z
   185  ----
   186  replicated 3 shared SSTs
   187  
   188  iter
   189  first
   190  next
   191  next
   192  next
   193  next
   194  next
   195  next
   196  next
   197  ----
   198  a: (1, .)
   199  d: (foo, .)
   200  e: (bar, .)
   201  f: (bar3, .)
   202  g: (bar3, [g-j) @4=value UPDATED)
   203  h@3: (foobar, [g-j) @4=value)
   204  i@5: (baz, [g-j) @4=value)
   205  l: (2, . UPDATED)
   206  
   207  iter mask-filter mask-suffix=@6
   208  first
   209  next
   210  next
   211  next
   212  next
   213  next
   214  next
   215  ----
   216  a: (1, .)
   217  d: (foo, .)
   218  e: (bar, .)
   219  f: (bar3, .)
   220  g: (bar3, [g-j) @4=value UPDATED)
   221  i@5: (baz, [g-j) @4=value)
   222  l: (2, . UPDATED)
   223  
   224  compact a-z
   225  ----
   226  ok
   227  
   228  replicate 2 1 a z
   229  ----
   230  replicated 3 shared SSTs
   231  
   232  switch 1
   233  ----
   234  ok
   235  
   236  iter
   237  first
   238  next
   239  next
   240  next
   241  next
   242  next
   243  next
   244  next
   245  next
   246  ----
   247  a: (1, .)
   248  d: (foo, .)
   249  e: (bar, .)
   250  f: (bar3, .)
   251  g: (bar3, [g-j) @4=value UPDATED)
   252  h@3: (foobar, [g-j) @4=value)
   253  i@5: (baz, [g-j) @4=value)
   254  l: (2, . UPDATED)
   255  .
   256  
   257  iter mask-filter mask-suffix=@6
   258  first
   259  next
   260  next
   261  next
   262  next
   263  next
   264  next
   265  next
   266  ----
   267  a: (1, .)
   268  d: (foo, .)
   269  e: (bar, .)
   270  f: (bar3, .)
   271  g: (bar3, [g-j) @4=value UPDATED)
   272  i@5: (baz, [g-j) @4=value)
   273  l: (2, . UPDATED)
   274  .
   275  
   276  # Reverse iteration test with masking.
   277  
   278  iter mask-filter mask-suffix=@6
   279  last
   280  prev
   281  prev
   282  prev
   283  prev
   284  prev
   285  prev
   286  prev
   287  ----
   288  l: (2, .)
   289  i@5: (baz, [g-j) @4=value UPDATED)
   290  g: (bar3, [g-j) @4=value)
   291  f: (bar3, . UPDATED)
   292  e: (bar, .)
   293  d: (foo, .)
   294  a: (1, .)
   295  .
   296  
   297  # Range del tests.
   298  
   299  reset
   300  ----
   301  
   302  switch 1
   303  ----
   304  ok
   305  
   306  batch
   307  set a@3 o
   308  set b@5 foo
   309  set c@6 bar
   310  set e baz
   311  ----
   312  
   313  flush
   314  ----
   315  
   316  compact a-z
   317  ----
   318  ok
   319  
   320  batch
   321  del-range b d
   322  ----
   323  
   324  flush
   325  ----
   326  
   327  batch
   328  set a@3 abc
   329  set b@7 notdeleted
   330  set c@9 foobar
   331  ----
   332  
   333  flush
   334  ----
   335  
   336  lsm
   337  ----
   338  0.1:
   339    000009:[a@3#15,SET-c@9#17,SET]
   340  0.0:
   341    000007:[b#14,RANGEDEL-d#inf,RANGEDEL]
   342  6:
   343    000005:[a@3#10,SET-e#13,SET]
   344  
   345  iter
   346  first
   347  next
   348  next
   349  next
   350  next
   351  ----
   352  a@3: (abc, .)
   353  b@7: (notdeleted, .)
   354  c@9: (foobar, .)
   355  e: (baz, .)
   356  .
   357  
   358  replicate 1 2 a z
   359  ----
   360  replicated 1 shared SSTs
   361  
   362  switch 2
   363  ----
   364  ok
   365  
   366  lsm
   367  ----
   368  0.0:
   369    000004:[a@3#11,SET-d#inf,RANGEDEL]
   370  6:
   371    000005:[a@3#10,SET-e#10,SET]
   372  
   373  iter
   374  first
   375  next
   376  next
   377  next
   378  next
   379  ----
   380  a@3: (abc, .)
   381  b@7: (notdeleted, .)
   382  c@9: (foobar, .)
   383  e: (baz, .)
   384  .
   385  
   386  # Similar to the above test, except this time we bring the rangedel into
   387  # L5 using an ingestion.
   388  
   389  reset
   390  ----
   391  
   392  switch 1
   393  ----
   394  ok
   395  
   396  batch
   397  set a@3 o
   398  set b@5 foo
   399  set c@6 bar
   400  set e baz
   401  ----
   402  
   403  flush
   404  ----
   405  
   406  compact a-z
   407  ----
   408  ok
   409  
   410  build s1
   411  del-range b d
   412  ----
   413  
   414  ingest s1
   415  ----
   416  
   417  lsm
   418  ----
   419  5:
   420    000006:[b#14,RANGEDEL-d#inf,RANGEDEL]
   421  6:
   422    000005:[a@3#10,SET-e#13,SET]
   423  
   424  batch
   425  set a@3 abc
   426  set b@7 notdeleted
   427  set c@9 foobar
   428  ----
   429  
   430  flush
   431  ----
   432  
   433  lsm
   434  ----
   435  0.0:
   436    000008:[a@3#15,SET-c@9#17,SET]
   437  5:
   438    000006:[b#14,RANGEDEL-d#inf,RANGEDEL]
   439  6:
   440    000005:[a@3#10,SET-e#13,SET]
   441  
   442  iter
   443  first
   444  next
   445  next
   446  next
   447  next
   448  next
   449  ----
   450  a@3: (abc, .)
   451  b@7: (notdeleted, .)
   452  c@9: (foobar, .)
   453  e: (baz, .)
   454  .
   455  .
   456  
   457  replicate 1 2 a z
   458  ----
   459  replicated 2 shared SSTs
   460  
   461  switch 2
   462  ----
   463  ok
   464  
   465  lsm
   466  ----
   467  0.0:
   468    000004:[a@3#12,SET-c@9#12,SET]
   469  5:
   470    000005:[b#11,RANGEDEL-d#inf,RANGEDEL]
   471  6:
   472    000006:[a@3#10,SET-e#10,SET]
   473  
   474  iter
   475  first
   476  next
   477  next
   478  next
   479  next
   480  ----
   481  a@3: (abc, .)
   482  b@7: (notdeleted, .)
   483  c@9: (foobar, .)
   484  e: (baz, .)
   485  .
   486  
   487  # Test for cases where an excise produces a range key on one side and point keys
   488  # on the other.
   489  
   490  reset
   491  ----
   492  
   493  switch 1
   494  ----
   495  ok
   496  
   497  batch
   498  range-key-set a aaa @3 foo
   499  set d foobar
   500  set e barbaz
   501  ----
   502  
   503  flush
   504  ----
   505  
   506  compact a-z
   507  ----
   508  ok
   509  
   510  lsm
   511  ----
   512  6:
   513    000005:[a#10,RANGEKEYSET-e#12,SET]
   514  
   515  switch 2
   516  ----
   517  ok
   518  
   519  batch
   520  set b bcd
   521  set c cde
   522  ----
   523  
   524  flush
   525  ----
   526  
   527  compact a-z
   528  ----
   529  ok
   530  
   531  replicate 2 1 b cc
   532  ----
   533  replicated 1 shared SSTs
   534  
   535  switch 1
   536  ----
   537  ok
   538  
   539  lsm
   540  ----
   541  6:
   542    000008:[a#10,RANGEKEYSET-aaa#inf,RANGEKEYSET]
   543    000007:[b#13,SET-c#13,SET]
   544    000009:[d#11,SET-e#12,SET]
   545  
   546  iter
   547  first
   548  next
   549  next
   550  next
   551  next
   552  ----
   553  a: (., [a-aaa) @3=foo UPDATED)
   554  b: (bcd, . UPDATED)
   555  c: (cde, .)
   556  d: (foobar, .)
   557  e: (barbaz, .)
   558  
   559  reset
   560  ----
   561  
   562  switch 1
   563  ----
   564  ok
   565  
   566  batch
   567  set a@3 o
   568  set b@5 foo
   569  set c@6 bar
   570  set e baz
   571  ----
   572  
   573  flush
   574  ----
   575  
   576  compact a-z
   577  ----
   578  ok
   579  
   580  build s2
   581  del-range bb g
   582  ----
   583  
   584  ingest s2
   585  ----
   586  
   587  lsm
   588  ----
   589  5:
   590    000006:[bb#14,RANGEDEL-g#inf,RANGEDEL]
   591  6:
   592    000005:[a@3#10,SET-e#13,SET]
   593  
   594  switch 2
   595  ----
   596  ok
   597  
   598  batch
   599  set ff notdeleted
   600  ----
   601  
   602  flush
   603  ----
   604  
   605  compact a-z
   606  ----
   607  ok
   608  
   609  lsm
   610  ----
   611  6:
   612    000005:[ff#10,SET-ff#10,SET]
   613  
   614  # This replication should truncate the range deletion in pebble instance 1
   615  # at f, leaving ff undeleted.
   616  
   617  replicate 1 2 b f
   618  ----
   619  replicated 2 shared SSTs
   620  
   621  lsm
   622  ----
   623  5:
   624    000007:[bb#12,RANGEDEL-f#inf,RANGEDEL]
   625  6:
   626    000008:[b@5#11,SET-e#11,SET]
   627    000005:[ff#10,SET-ff#10,SET]
   628  
   629  iter
   630  seek-ge b
   631  next
   632  next
   633  ----
   634  b@5: (foo, .)
   635  ff: (notdeleted, .)
   636  .
   637  
   638  # Same as above, but with a truncated range key instead of a truncated range del.
   639  
   640  reset
   641  ----
   642  
   643  switch 1
   644  ----
   645  ok
   646  
   647  batch
   648  set a@3 o
   649  set b@5 foo
   650  set c@6 bar
   651  set e baz
   652  ----
   653  
   654  flush
   655  ----
   656  
   657  compact a-z
   658  ----
   659  ok
   660  
   661  build s3
   662  range-key-set bb g @8 foo
   663  ----
   664  
   665  ingest s3
   666  ----
   667  
   668  lsm
   669  ----
   670  5:
   671    000006:[bb#14,RANGEKEYSET-g#inf,RANGEKEYSET]
   672  6:
   673    000005:[a@3#10,SET-e#13,SET]
   674  
   675  switch 2
   676  ----
   677  ok
   678  
   679  batch
   680  set ff notcovered
   681  ----
   682  
   683  flush
   684  ----
   685  
   686  compact a-z
   687  ----
   688  ok
   689  
   690  lsm
   691  ----
   692  6:
   693    000005:[ff#10,SET-ff#10,SET]
   694  
   695  # This replication should truncate the range key in pebble instance 1
   696  # at f, leaving ff uncovered.
   697  
   698  replicate 1 2 b f
   699  ----
   700  replicated 2 shared SSTs
   701  
   702  lsm
   703  ----
   704  5:
   705    000007:[bb#12,RANGEKEYSET-f#inf,RANGEKEYSET]
   706  6:
   707    000008:[b@5#11,SET-e#11,SET]
   708    000005:[ff#10,SET-ff#10,SET]
   709  
   710  iter
   711  seek-ge b
   712  next
   713  next
   714  next
   715  next
   716  next
   717  ----
   718  b@5: (foo, .)
   719  bb: (., [bb-f) @8=foo UPDATED)
   720  c@6: (bar, [bb-f) @8=foo)
   721  e: (baz, [bb-f) @8=foo)
   722  ff: (notcovered, . UPDATED)
   723  .
   724  
   725  
   726  iter mask-filter mask-suffix=@9
   727  seek-ge b
   728  next
   729  next
   730  next
   731  next
   732  ----
   733  b@5: (foo, .)
   734  bb: (., [bb-f) @8=foo UPDATED)
   735  e: (baz, [bb-f) @8=foo)
   736  ff: (notcovered, . UPDATED)
   737  .
   738  
   739  # Tests for Eventually file-only snapshots.
   740  
   741  reset
   742  ----
   743  
   744  switch 1
   745  ----
   746  ok
   747  
   748  batch
   749  set a foo
   750  set b bar
   751  set c baz
   752  ----
   753  
   754  flush
   755  ----
   756  
   757  compact a-z
   758  ----
   759  ok
   760  
   761  switch 2
   762  ----
   763  ok
   764  
   765  batch
   766  set b foobar
   767  ----
   768  
   769  file-only-snapshot s1
   770   aa bb
   771   e f
   772  ----
   773  ok
   774  
   775  lsm
   776  ----
   777  
   778  iter snapshot=s1
   779  first
   780  next
   781  next
   782  ----
   783  b: (foobar, .)
   784  .
   785  .
   786  
   787  # The below call should do a flush.
   788  
   789  wait-for-file-only-snapshot s1
   790  ----
   791  ok
   792  
   793  lsm
   794  ----
   795  0.0:
   796    000005:[b#10,SET-b#10,SET]
   797  
   798  iter snapshot=s1
   799  first
   800  next
   801  next
   802  ----
   803  b: (foobar, .)
   804  .
   805  .
   806  
   807  replicate 1 2 a d
   808  ----
   809  replicated 1 shared SSTs
   810  
   811  iter snapshot=s1
   812  first
   813  next
   814  next
   815  ----
   816  b: (foobar, .)
   817  .
   818  .
   819  
   820  iter
   821  first
   822  next
   823  next
   824  next
   825  ----
   826  a: (foo, .)
   827  b: (bar, .)
   828  c: (baz, .)
   829  .
   830  
   831  switch 1
   832  ----
   833  ok
   834  
   835  batch
   836  del c
   837  ----
   838  
   839  # The below excise and wait should succeed as the flush will end up transitioning
   840  # the file-only snapshot.
   841  
   842  lsm
   843  ----
   844  6:
   845    000005:[a#10,SET-c#12,SET]
   846  
   847  file-only-snapshot s2
   848   a cc
   849  ----
   850  ok
   851  
   852  iter snapshot=s2
   853  first
   854  next
   855  next
   856  next
   857  next
   858  ----
   859  a: (foo, .)
   860  b: (bar, .)
   861  .
   862  .
   863  .
   864  
   865  flush
   866  ----
   867  
   868  compact a-z
   869  ----
   870  ok
   871  
   872  replicate 2 1 a d
   873  ----
   874  replicated 1 shared SSTs
   875  
   876  wait-for-file-only-snapshot s2
   877  ----
   878  ok
   879  
   880  iter snapshot=s2
   881  first
   882  next
   883  next
   884  next
   885  ----
   886  a: (foo, .)
   887  b: (bar, .)
   888  .
   889  .
   890  
   891  iter snapshot=s2
   892  first
   893  clone
   894  first
   895  next
   896  next
   897  next
   898  ----
   899  a: (foo, .)
   900  .
   901  a: (foo, .)
   902  b: (bar, .)
   903  .
   904  .
   905  
   906  iter
   907  first
   908  next
   909  next
   910  next
   911  next
   912  ----
   913  a: (foo, .)
   914  b: (bar, .)
   915  c: (baz, .)
   916  .
   917  .
   918  
   919  batch
   920  set d foo
   921  set e bar
   922  ----
   923  
   924  flush
   925  ----
   926  
   927  compact a-z
   928  ----
   929  ok
   930  
   931  switch 2
   932  ----
   933  ok
   934  
   935  flush
   936  ----
   937  
   938  batch
   939  set f foobar
   940  ----
   941  
   942  # The below file-only snapshot is the more challenging case of a partial overlap
   943  # between an excise and a file-only snapshot. In this case the EFOS transition
   944  # blocks on the memtable but the excise proceeds through, causing the EFOS'
   945  # WaitForFileOnlySnapshot() call to error out. Opening iterators also returns
   946  # the same errors.
   947  
   948  file-only-snapshot s3
   949   c g
   950  ----
   951  ok
   952  
   953  iter snapshot=s3
   954  first
   955  next
   956  next
   957  next
   958  next
   959  ----
   960  a: (foo, .)
   961  b: (bar, .)
   962  c: (baz, .)
   963  f: (foobar, .)
   964  .
   965  
   966  iter snapshot=s3
   967  first
   968  next
   969  clone
   970  first
   971  next
   972  next
   973  next
   974  ----
   975  a: (foo, .)
   976  b: (bar, .)
   977  .
   978  a: (foo, .)
   979  b: (bar, .)
   980  c: (baz, .)
   981  f: (foobar, .)
   982  
   983  
   984  replicate 1 2 b e
   985  ----
   986  replicated 2 shared SSTs
   987  
   988  wait-for-file-only-snapshot s3
   989  ----
   990  pebble: snapshot excised before conversion to file-only snapshot
   991  
   992  iter snapshot=s3
   993  first
   994  next
   995  next
   996  next
   997  next
   998  ----
   999  pebble: snapshot excised before conversion to file-only snapshot
  1000  
  1001  iter snapshot=s3
  1002  first
  1003  next
  1004  clone
  1005  first
  1006  next
  1007  next
  1008  next
  1009  ----
  1010  pebble: snapshot excised before conversion to file-only snapshot
  1011  
  1012  iter
  1013  first
  1014  next
  1015  next
  1016  next
  1017  next
  1018  ----
  1019  a: (foo, .)
  1020  b: (bar, .)
  1021  c: (baz, .)
  1022  d: (foo, .)
  1023  f: (foobar, .)
  1024  
  1025  # The below example tests for a file-only snapshot that overlaps completely
  1026  # with an excise right after it. The wait succeeds and snapshot consistency is
  1027  # maintained.
  1028  
  1029  reset
  1030  ----
  1031  
  1032  switch 1
  1033  ----
  1034  ok
  1035  
  1036  batch
  1037  set a foo
  1038  set b bar
  1039  set c baz
  1040  ----
  1041  
  1042  flush
  1043  ----
  1044  
  1045  compact a-z
  1046  ----
  1047  ok
  1048  
  1049  switch 2
  1050  ----
  1051  ok
  1052  
  1053  batch
  1054  set d foobar
  1055  ----
  1056  
  1057  file-only-snapshot s4
  1058   b e
  1059  ----
  1060  ok
  1061  
  1062  iter snapshot=s4
  1063  first
  1064  next
  1065  next
  1066  ----
  1067  d: (foobar, .)
  1068  .
  1069  .
  1070  
  1071  replicate 1 2 b e
  1072  ----
  1073  replicated 1 shared SSTs
  1074  
  1075  wait-for-file-only-snapshot s4
  1076  ----
  1077  ok
  1078  
  1079  iter snapshot=s4
  1080  first
  1081  next
  1082  next
  1083  ----
  1084  d: (foobar, .)
  1085  .
  1086  .
  1087  
  1088  compact a-z
  1089  ----
  1090  ok
  1091  
  1092  iter snapshot=s4
  1093  first
  1094  next
  1095  next
  1096  ----
  1097  d: (foobar, .)
  1098  .
  1099  .
  1100  
  1101  iter
  1102  first
  1103  next
  1104  next
  1105  ----
  1106  b: (bar, .)
  1107  c: (baz, .)
  1108  .