/
issue_50012.go
54 lines (50 loc) · 1.17 KB
/
issue_50012.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package cases
import (
"context"
"database/sql"
"time"
)
// https://github.com/pingcap/tidb/issues/50012.
// Preconditions:
//
// tiup playground nightly --db 1 --kv 1 --pd 1 --tiflash 0
func RunTest50012(repeatedly bool) {
db, err := sql.Open("mysql", "root@tcp(127.0.0.1:4000)/test")
mustNil(err)
defer db.Close()
ctx := context.Background()
conn, err := db.Conn(ctx)
mustNil(err)
defer conn.Close()
_, err = conn.ExecContext(ctx, "SET tidb_multi_statement_mode='ON';")
mustNil(err)
_, err = conn.ExecContext(ctx, "drop table if exists t;")
mustNil(err)
_, err = conn.ExecContext(ctx, `CREATE TABLE t (
a bigint(20),
b int(10),
PRIMARY KEY (b, a),
UNIQUE KEY uk_a (a)
);
`)
mustNil(err)
_, err = conn.ExecContext(ctx, `insert into t values (1, 1);`)
mustNil(err)
startTime := time.Now()
for {
if time.Since(startTime) >= 10*time.Minute {
break
}
_, err = conn.ExecContext(ctx, "begin;")
mustNil(err)
rs, err := conn.QueryContext(ctx, "update t set a = 2 where a = 1; select 1;")
mustNil(err)
printAll(rs)
_, err = conn.ExecContext(ctx, "rollback;")
mustNil(err)
if !repeatedly {
break
}
time.Sleep(50 * time.Millisecond)
}
}