github.com/cockroachdb/cockroach@v20.2.0-alpha.1+incompatible/pkg/storage/testdata/mvcc_histories/max_keys (about)

     1  # Test opts.MaxKeys.
     2  
     3  # Put some test data.
     4  run ok
     5  with ts=1,0
     6    put      k=a v=val-a
     7    put      k=aa v=val-aa
     8    put      k=c v=val-c
     9    put      k=e v=val-e
    10  del        k=aa ts=2,0
    11  ----
    12  >> at end:
    13  data: "a"/0.000000001,0 -> /BYTES/val-a
    14  data: "aa"/0.000000002,0 -> /<empty>
    15  data: "aa"/0.000000001,0 -> /BYTES/val-aa
    16  data: "c"/0.000000001,0 -> /BYTES/val-c
    17  data: "e"/0.000000001,0 -> /BYTES/val-e
    18  
    19  # Limit 1 works.
    20  run ok
    21  with ts=300,0 k=a end=z max=1
    22    scan
    23    scan reverse=true
    24  ----
    25  scan: "a" -> /BYTES/val-a @0.000000001,0
    26  scan: resume span ["aa","z")
    27  scan: "e" -> /BYTES/val-e @0.000000001,0
    28  scan: resume span ["a","c\x00")
    29  
    30  # Limit -1 works: nothing is returned, go straight to resume span. We use this
    31  # when executing the remaining scans in a batch after already exhausting the
    32  # batch-wide allowable number of rows returned.
    33  run ok
    34  with ts=300,0 k=a end=z max=-1
    35    scan
    36    scan reverse=true
    37  ----
    38  scan: resume span ["a","z")
    39  scan: "a"-"z" -> <no data>
    40  scan: resume span ["a","z")
    41  scan: "a"-"z" -> <no data>
    42  
    43  # Limit and tombstones: the tombstones count.
    44  run ok
    45  with ts=300,0 k=a end=z max=2 tombstones=true
    46    scan
    47  ----
    48  scan: "a" -> /BYTES/val-a @0.000000001,0
    49  scan: "aa" -> /<empty> @0.000000002,0
    50  scan: resume span ["c","z")
    51  
    52  # Ditto in reverse.
    53  run ok
    54  with ts=300,0 k=a end=d max=2 tombstones=true reverse=true
    55    scan
    56  ----
    57  scan: "c" -> /BYTES/val-c @0.000000001,0
    58  scan: "aa" -> /<empty> @0.000000002,0
    59  scan: resume span ["a","a\x00")
    60  
    61  # No limit = zero limit = infinity limit (zero is preferred).
    62  run ok
    63  with ts=300,0 k=a end=z
    64    scan
    65    scan reverse=true
    66    scan max=0
    67    scan reverse=true max=0
    68    scan max=99999
    69    scan reverse=true max=9999
    70  ----
    71  scan: "a" -> /BYTES/val-a @0.000000001,0
    72  scan: "c" -> /BYTES/val-c @0.000000001,0
    73  scan: "e" -> /BYTES/val-e @0.000000001,0
    74  scan: "e" -> /BYTES/val-e @0.000000001,0
    75  scan: "c" -> /BYTES/val-c @0.000000001,0
    76  scan: "a" -> /BYTES/val-a @0.000000001,0
    77  scan: "a" -> /BYTES/val-a @0.000000001,0
    78  scan: "c" -> /BYTES/val-c @0.000000001,0
    79  scan: "e" -> /BYTES/val-e @0.000000001,0
    80  scan: "e" -> /BYTES/val-e @0.000000001,0
    81  scan: "c" -> /BYTES/val-c @0.000000001,0
    82  scan: "a" -> /BYTES/val-a @0.000000001,0
    83  scan: "a" -> /BYTES/val-a @0.000000001,0
    84  scan: "c" -> /BYTES/val-c @0.000000001,0
    85  scan: "e" -> /BYTES/val-e @0.000000001,0
    86  scan: "e" -> /BYTES/val-e @0.000000001,0
    87  scan: "c" -> /BYTES/val-c @0.000000001,0
    88  scan: "a" -> /BYTES/val-a @0.000000001,0
    89  
    90  # Regression test for #46652: Test appropriate termination when the MaxKeys-th
    91  # key is in the intent history.
    92  
    93  run ok
    94  with t=A ts=11,0 max=3
    95    txn_begin
    96    txn_step  seq=10
    97    put       k=k  v=a
    98    put       k=l  v=a
    99    put       k=m  v=a
   100    put       k=n  v=a
   101    txn_step  seq=20
   102    put       k=k  v=b
   103    put       k=l  v=b
   104    put       k=m  v=b
   105    put       k=n  v=b
   106    txn_step  seq=30
   107    put       k=k  v=c
   108    put       k=l  v=c
   109    put       k=m  v=c
   110    put       k=n  v=c
   111    txn_step  seq=20
   112    scan      k=k end=o
   113    scan      k=k end=o reverse=true
   114  ----
   115  scan: "k" -> /BYTES/b @0,0
   116  scan: "l" -> /BYTES/b @0,0
   117  scan: "m" -> /BYTES/b @0,0
   118  scan: resume span ["n","o")
   119  scan: "n" -> /BYTES/b @0,0
   120  scan: "m" -> /BYTES/b @0,0
   121  scan: "l" -> /BYTES/b @0,0
   122  scan: resume span ["k","k\x00")
   123  >> at end:
   124  txn: "A" meta={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000011,0 min=0,0 seq=20} lock=true stat=PENDING rts=0.000000011,0 wto=false max=0,0
   125  data: "a"/0.000000001,0 -> /BYTES/val-a
   126  data: "aa"/0.000000002,0 -> /<empty>
   127  data: "aa"/0.000000001,0 -> /BYTES/val-aa
   128  data: "c"/0.000000001,0 -> /BYTES/val-c
   129  data: "e"/0.000000001,0 -> /BYTES/val-e
   130  meta: "k"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000011,0 min=0,0 seq=30} ts=0.000000011,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   131  data: "k"/0.000000011,0 -> /BYTES/c
   132  meta: "l"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000011,0 min=0,0 seq=30} ts=0.000000011,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   133  data: "l"/0.000000011,0 -> /BYTES/c
   134  meta: "m"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000011,0 min=0,0 seq=30} ts=0.000000011,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   135  data: "m"/0.000000011,0 -> /BYTES/c
   136  meta: "n"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000011,0 min=0,0 seq=30} ts=0.000000011,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   137  data: "n"/0.000000011,0 -> /BYTES/c
   138  
   139  run ok
   140  with t=A ts=11,0 max=3
   141    txn_step  seq=30
   142    resolve_intent k=k status=COMMITTED
   143    resolve_intent k=l status=COMMITTED
   144    resolve_intent k=m status=COMMITTED
   145    resolve_intent k=n status=COMMITTED
   146  ----
   147  >> at end:
   148  txn: "A" meta={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000011,0 min=0,0 seq=30} lock=true stat=PENDING rts=0.000000011,0 wto=false max=0,0
   149  data: "a"/0.000000001,0 -> /BYTES/val-a
   150  data: "aa"/0.000000002,0 -> /<empty>
   151  data: "aa"/0.000000001,0 -> /BYTES/val-aa
   152  data: "c"/0.000000001,0 -> /BYTES/val-c
   153  data: "e"/0.000000001,0 -> /BYTES/val-e
   154  data: "k"/0.000000011,0 -> /BYTES/c
   155  data: "l"/0.000000011,0 -> /BYTES/c
   156  data: "m"/0.000000011,0 -> /BYTES/c
   157  data: "n"/0.000000011,0 -> /BYTES/c
   158  
   159  # Same case as above, except with a committed value at the key after MaxKeys.
   160  
   161  run ok
   162  with t=B ts=12,0 max=3
   163    txn_begin
   164    txn_step  seq=10
   165    put       k=k  v=a
   166    put       k=l  v=a
   167    put       k=m  v=a
   168    txn_step  seq=20
   169    put       k=k  v=b
   170    put       k=l  v=b
   171    put       k=m  v=b
   172    txn_step  seq=30
   173    put       k=k  v=c
   174    put       k=l  v=c
   175    put       k=m  v=c
   176    txn_step  seq=20
   177    scan      k=k end=o
   178  ----
   179  scan: "k" -> /BYTES/b @0,0
   180  scan: "l" -> /BYTES/b @0,0
   181  scan: "m" -> /BYTES/b @0,0
   182  scan: resume span ["n","o")
   183  >> at end:
   184  txn: "B" meta={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000012,0 min=0,0 seq=20} lock=true stat=PENDING rts=0.000000012,0 wto=false max=0,0
   185  data: "a"/0.000000001,0 -> /BYTES/val-a
   186  data: "aa"/0.000000002,0 -> /<empty>
   187  data: "aa"/0.000000001,0 -> /BYTES/val-aa
   188  data: "c"/0.000000001,0 -> /BYTES/val-c
   189  data: "e"/0.000000001,0 -> /BYTES/val-e
   190  meta: "k"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000012,0 min=0,0 seq=30} ts=0.000000012,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   191  data: "k"/0.000000012,0 -> /BYTES/c
   192  data: "k"/0.000000011,0 -> /BYTES/c
   193  meta: "l"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000012,0 min=0,0 seq=30} ts=0.000000012,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   194  data: "l"/0.000000012,0 -> /BYTES/c
   195  data: "l"/0.000000011,0 -> /BYTES/c
   196  meta: "m"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000012,0 min=0,0 seq=30} ts=0.000000012,0 del=false klen=12 vlen=6 ih={{10 /BYTES/a}{20 /BYTES/b}}
   197  data: "m"/0.000000012,0 -> /BYTES/c
   198  data: "m"/0.000000011,0 -> /BYTES/c
   199  data: "n"/0.000000011,0 -> /BYTES/c