apiVersion: api/v1
kind: Plan
name: utf-go-pessimistic-lock
tags: ['team:transaction', 'owner:zyguan', 'branch:master']
schedule: '@daily'
testbed:
  generateName: utf-go-
  resourcePool: test-store
  items:
  - name: tidb-default
    type: TIDB_CLUSTER
    spec:
      version: '{{meta.parameters.base_image_version}}-failpoint'
      pd:
        replicas: 1
        baseImage: '{{meta.parameters.pd_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/tikv/pd/server/api/enableFailpointAPI=return"
      tikv:
        replicas: 1
        baseImage: '{{meta.parameters.tikv_base_image}}'
        config: |
          [storage]
          reserve-space = 0
          enable-async-apply-prewrite = true
          [pessimistic-txn]
          pipelined = true
          in-memory = true
      tidb:
        replicas: 1
        baseImage: '{{meta.parameters.tidb_base_image}}'
        env:
        - name: GO_FAILPOINTS
          value: "github.com/pingcap/tidb/server/enableTestAPI=return"
        config: |
          new_collations_enabled_on_first_bootstrap = true
          [experimental]
          allow-expression-index = true
pipeline:
- name: TICASE-1213
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1213}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: []
- name: TICASE-1221
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1221}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1213.Succeeded || TICASE-1213.Failed]
- name: TICASE-1227
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1227}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1221.Succeeded || TICASE-1221.Failed]
- name: TICASE-1224
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1224}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1227.Succeeded || TICASE-1227.Failed]
- name: TICASE-1414
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1414}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1224.Succeeded || TICASE-1224.Failed]
- name: TICASE-1266
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1266}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1414.Succeeded || TICASE-1414.Failed]
- name: TICASE-1226
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1226}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1266.Succeeded || TICASE-1266.Failed]
- name: TICASE-1228
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1228}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1226.Succeeded || TICASE-1226.Failed]
- name: TICASE-1223
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1223}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1228.Succeeded || TICASE-1228.Failed]
- name: TICASE-1222
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TICASE-1222}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1223.Succeeded || TICASE-1223.Failed]
- name: SkipLockRead
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: SkipLockRead}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [TICASE-1222.Succeeded || TICASE-1222.Failed]
- name: CommitTsExpired
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CommitTsExpired}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [SkipLockRead.Succeeded || SkipLockRead.Failed]
- name: MaxTSCase
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: MaxTSCase}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [CommitTsExpired.Succeeded || CommitTsExpired.Failed]
- name: ReadNotWaitForResolvingLocks
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: ReadNotWaitForResolvingLocks}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [MaxTSCase.Succeeded || MaxTSCase.Failed]
- name: RCResolveLockTableScan
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int)","init":"insert
      into t values (0, 0), (1, 10), (2, 20), (3, 30)","new_data":[[1,11],[2,21],[3,31]],"old_data":[[1,10],[2,20],[3,30]],"query":"select
      id, v from t where id > 0 order by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [ReadNotWaitForResolvingLocks.Succeeded || ReadNotWaitForResolvingLocks.Failed]
- name: RCResolveLockPointGet
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int)","init":"insert
      into t values (0, 0), (1, 10)","new_data":[[1,11]],"old_data":[[1,10]],"query":"select
      id, v from t where id = 1"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockTableScan.Succeeded || RCResolveLockTableScan.Failed]
- name: RCResolveLockBatchPointGet
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int)","init":"insert
      into t values (0, 0), (1, 10), (2, 20), (3, 30)","new_data":[[1,11],[2,21],[3,31]],"old_data":[[1,10],[2,20],[3,30]],"query":"select
      id, v from t where id = 1 or id = 2 or id = 3 order by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockPointGet.Succeeded || RCResolveLockPointGet.Failed]
- name: RCResolveLockIndexLookup
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int, v2 int,
      index i_v2 (v2))","init":"insert into t values (0, 0, 3), (1, 10, 0), (2, 20,
      2), (3, 30, 1)","new_data":[[1,11],[2,21],[3,31]],"old_data":[[1,10],[2,20],[3,30]],"query":"select
      id, v from t use index (i_v2) where id > 0 order by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockBatchPointGet.Succeeded || RCResolveLockBatchPointGet.Failed]
- name: RCResolveLockIndexReader
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int, index
      i_v(v))","init":"insert into t values (0, 0), (1, 10), (2, 20), (3, 30)","new_data":[[1,11],[2,21],[3,31]],"old_data":[[1,10],[2,20],[3,30]],"query":"select
      id, v from t use index (i_v) where id > 0 order by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockIndexLookup.Succeeded || RCResolveLockIndexLookup.Failed]
- name: RCResolveLockUniqueIndexLocking
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int, unique
      index i_v(v))","init":"insert into t values (0, 0), (1, 10), (2, 20), (3, 30)","new_data":[[1,11],[2,21],[3,31]],"old_data":[],"query":"select
      id, v from t use index (i_v) where v = 11 or v = 21 or v = 31 order by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockIndexReader.Succeeded || RCResolveLockIndexReader.Failed]
- name: RCResolveLockIndexMerge
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int, a int,
      b int, index i_a(a), index i_b(b))","init":"insert into t values (0, 0, 0, 0),
      (1, 10, 1, 2), (2, 20, 3, 0), (3, 30, 2, 4)","new_data":[[1,11],[2,21],[3,31]],"old_data":[[1,10],[2,20],[3,30]],"query":"select
      /*+ USE_INDEX_MERGE(t, i_a, i_b) */ id, v from t where a > 0 or b > 0 order
      by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockUniqueIndexLocking.Succeeded || RCResolveLockUniqueIndexLocking.Failed]
- name: RCResolveLockIndexMergeUpdateIndex
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int, a int,
      index i_v(v), index i_a(a))","init":"insert into t values (0, 0, 0), (1, 10,
      1), (2, 20, 3), (3, 30, 2)","new_data":[[1,11],[2,21],[3,31]],"old_data":[[2,20],[3,30]],"query":"select
      /*+ USE_INDEX_MERGE(t, i_v, i_a) */ id, v from t where v > 10 or a > 1 order
      by id"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockIndexMerge.Succeeded || RCResolveLockIndexMerge.Failed]
- name: RCResolveLockSubQuery
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int)","init":"insert
      into t values (0, 0), (1, 10), (2, 20), (3, 1)","new_data":[[2,21]],"old_data":[[1,10]],"query":"select
      id, v from t where id = (select v from t where id = 3)"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockIndexMergeUpdateIndex.Succeeded || RCResolveLockIndexMergeUpdateIndex.Failed]
- name: RCResolveLockPreparedSubQuery
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: CaseRCResolveLock}
  - {name: params, value: '{"ddl":"create table t (id int primary key, v int)","init":"insert
      into t values (0, 0), (1, 10), (2, 20), (3, 1)","new_data":[[2,21]],"old_data":[[1,10]],"prepare":"prepare
      q1 from ''select id, v from t where id = (select v from t where id = 3)''","query":"execute
      q1"}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockSubQuery.Succeeded || RCResolveLockSubQuery.Failed]
- name: TimeDiff
  caseName: utf-go-transaction
  arguments:
  - {name: case, value: TimeDiff}
  - {name: params, value: '{}'}
  - {name: tidb, value: '{{testbed.tidb-default}}'}
  after: [RCResolveLockPreparedSubQuery.Succeeded || RCResolveLockPreparedSubQuery.Failed]
