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