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

     1  # TestMVCCIncrement verifies increment behavior. In particular,
     2  # incrementing a non-existent key by 0 will create the value.
     3  
     4  # Non-transactional increments.
     5  
     6  run ok
     7  with k=k
     8    increment ts=0,1 inc=0
     9    get       ts=0,1
    10    increment ts=0,2 inc=2
    11  ----
    12  inc: current value = 0
    13  get: "k" -> /INT/0 @0,1
    14  inc: current value = 2
    15  >> at end:
    16  data: "k"/0,2 -> /INT/2
    17  data: "k"/0,1 -> /INT/0
    18  
    19  run ok
    20  clear_range k=k end=-k
    21  ----
    22  >> at end:
    23  <no data>
    24  
    25  # Transactional increments.
    26  run ok
    27  with k=k t=a ts=0,1
    28    txn_begin
    29    txn_step
    30    increment
    31    txn_step
    32    increment
    33  ----
    34  inc: current value = 1
    35  inc: current value = 2
    36  >> at end:
    37  txn: "a" meta={id=00000000 key="k" pri=0.00000000 epo=0 ts=0,1 min=0,0 seq=2} lock=true stat=PENDING rts=0,1 wto=false max=0,0
    38  meta: "k"/0,0 -> txn={id=00000000 key="k" pri=0.00000000 epo=0 ts=0,1 min=0,0 seq=2} ts=0,1 del=false klen=12 vlen=6 ih={{1 /INT/1}}
    39  data: "k"/0,1 -> /INT/2
    40  
    41  
    42  # Increments at older timestamp generate WriteTooOld.
    43  
    44  run ok
    45  with k=r
    46    increment ts=1
    47    increment ts=3
    48  ----
    49  inc: current value = 1
    50  inc: current value = 2
    51  >> at end:
    52  meta: "k"/0,0 -> txn={id=00000000 key="k" pri=0.00000000 epo=0 ts=0,1 min=0,0 seq=2} ts=0,1 del=false klen=12 vlen=6 ih={{1 /INT/1}}
    53  data: "k"/0,1 -> /INT/2
    54  data: "r"/0.000000003,0 -> /INT/2
    55  data: "r"/0.000000001,0 -> /INT/1
    56  
    57  run error
    58  increment k=r ts=2
    59  ----
    60  >> at end:
    61  meta: "k"/0,0 -> txn={id=00000000 key="k" pri=0.00000000 epo=0 ts=0,1 min=0,0 seq=2} ts=0,1 del=false klen=12 vlen=6 ih={{1 /INT/1}}
    62  data: "k"/0,1 -> /INT/2
    63  data: "r"/0.000000003,1 -> /INT/3
    64  data: "r"/0.000000003,0 -> /INT/2
    65  data: "r"/0.000000001,0 -> /INT/1
    66  error: (*roachpb.WriteTooOldError:) WriteTooOldError: write at timestamp 0.000000002,0 too old; wrote at 0.000000003,1
    67  
    68  # Ditto with transactional.
    69  run error
    70  with t=r
    71    txn_begin ts=2
    72    increment k=r
    73  ----
    74  >> at end:
    75  txn: "r" meta={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000002,0 min=0,0 seq=0} lock=true stat=PENDING rts=0.000000002,0 wto=false max=0,0
    76  meta: "k"/0,0 -> txn={id=00000000 key="k" pri=0.00000000 epo=0 ts=0,1 min=0,0 seq=2} ts=0,1 del=false klen=12 vlen=6 ih={{1 /INT/1}}
    77  data: "k"/0,1 -> /INT/2
    78  meta: "r"/0,0 -> txn={id=00000000 key=/Min pri=0.00000000 epo=0 ts=0.000000003,2 min=0,0 seq=0} ts=0.000000003,2 del=false klen=12 vlen=6
    79  data: "r"/0.000000003,2 -> /INT/2
    80  data: "r"/0.000000003,1 -> /INT/3
    81  data: "r"/0.000000003,0 -> /INT/2
    82  data: "r"/0.000000001,0 -> /INT/1
    83  error: (*roachpb.WriteTooOldError:) WriteTooOldError: write at timestamp 0.000000002,0 too old; wrote at 0.000000003,2