Skip to content

Commit 57fea99

Browse files
committed
Add and adjust a test from MySQL:
commit 1198267c331b045b9cad26be72b1a5b4f8930a79 Author: Thirunarayanan Balathandayuthapani <thirunarayanan.balathandayuth@oracle.com> Date: Fri Aug 26 11:00:44 2016 +0530 Bug #20989615 INNODB AUTO_INCREMENT PRODUCES SAME VALUE TWICE The code fix is already present.
1 parent 864548c commit 57fea99

File tree

2 files changed

+175
-0
lines changed

2 files changed

+175
-0
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY)ENGINE=INNODB;
2+
# SETTING auto_increment_increment IN CONNECTION DEFAULT
3+
SET AUTO_INCREMENT_INCREMENT = 1;
4+
INSERT INTO t1 VALUES(NULL);
5+
SELECT * FROM t1;
6+
id
7+
1
8+
SHOW CREATE TABLE t1;
9+
Table Create Table
10+
t1 CREATE TABLE `t1` (
11+
`id` int(11) NOT NULL AUTO_INCREMENT,
12+
PRIMARY KEY (`id`)
13+
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
14+
# SETTING auto_increment_increment IN CONNECTION1
15+
SET AUTO_INCREMENT_INCREMENT = 2;
16+
SET DEBUG_SYNC= 'ib_after_row_insert SIGNAL opened WAIT_FOR flushed1';
17+
INSERT INTO t1 VALUES(NULL);
18+
SET AUTO_INCREMENT_INCREMENT = 2;
19+
SET DEBUG_SYNC= 'now WAIT_FOR opened';
20+
SET DEBUG_SYNC= 'ib_after_row_insert_step SIGNAL flushed1 WAIT_FOR opened1';
21+
insert into t1 values(NULL);
22+
SELECT * FROM t1;
23+
id
24+
1
25+
3
26+
SHOW CREATE TABLE t1;
27+
Table Create Table
28+
t1 CREATE TABLE `t1` (
29+
`id` int(11) NOT NULL AUTO_INCREMENT,
30+
PRIMARY KEY (`id`)
31+
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
32+
SET DEBUG_SYNC= 'now SIGNAL opened1';
33+
SELECT * FROM t1;
34+
id
35+
1
36+
3
37+
5
38+
SHOW CREATE TABLE t1;
39+
Table Create Table
40+
t1 CREATE TABLE `t1` (
41+
`id` int(11) NOT NULL AUTO_INCREMENT,
42+
PRIMARY KEY (`id`)
43+
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1
44+
DROP TABLE t1;
45+
CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY)ENGINE=INNODB;
46+
# SETTING auto_increment_increment IN CONNECTION DEFAULT
47+
SET AUTO_INCREMENT_INCREMENT = 1;
48+
INSERT INTO t1 VALUES(NULL);
49+
SELECT * FROM t1;
50+
id
51+
1
52+
SHOW CREATE TABLE t1;
53+
Table Create Table
54+
t1 CREATE TABLE `t1` (
55+
`id` int(11) NOT NULL AUTO_INCREMENT,
56+
PRIMARY KEY (`id`)
57+
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
58+
SET DEBUG_SYNC = 'now SIGNAL flushed';
59+
# SETTING auto_increment_increment in connection1
60+
SET AUTO_INCREMENT_INCREMENT = 2;
61+
SET DEBUG_SYNC= 'now WAIT_FOR flushed';
62+
SET DEBUG_SYNC= 'ib_after_row_insert SIGNAL opened WAIT_FOR flushed1';
63+
INSERT INTO t1 values(NULL);
64+
SET DEBUG_SYNC= 'now WAIT_FOR opened';
65+
SET DEBUG_SYNC= 'ib_after_row_insert_step SIGNAL flushed1 WAIT_FOR opened1';
66+
INSERT INTO t1 VALUES(NULL);
67+
SELECT * FROM t1;
68+
id
69+
1
70+
3
71+
SHOW CREATE TABLE t1;
72+
Table Create Table
73+
t1 CREATE TABLE `t1` (
74+
`id` int(11) NOT NULL AUTO_INCREMENT,
75+
PRIMARY KEY (`id`)
76+
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
77+
SET DEBUG_SYNC= 'now SIGNAL opened1';
78+
SELECT * FROM t1;
79+
id
80+
1
81+
3
82+
5
83+
SHOW CREATE TABLE t1;
84+
Table Create Table
85+
t1 CREATE TABLE `t1` (
86+
`id` int(11) NOT NULL AUTO_INCREMENT,
87+
PRIMARY KEY (`id`)
88+
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
89+
DROP TABLE t1;
90+
SET DEBUG_SYNC='RESET';
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
--source include/have_innodb.inc
2+
--source include/have_debug.inc
3+
--source include/not_embedded.inc
4+
5+
# Two parallel connection with autoinc column after restart.
6+
7+
CREATE TABLE t1 (id INT AUTO_INCREMENT PRIMARY KEY)ENGINE=INNODB;
8+
9+
--echo # SETTING auto_increment_increment IN CONNECTION DEFAULT
10+
SET AUTO_INCREMENT_INCREMENT = 1;
11+
INSERT INTO t1 VALUES(NULL);
12+
SELECT * FROM t1;
13+
SHOW CREATE TABLE t1;
14+
15+
--source include/restart_mysqld.inc
16+
17+
--echo # SETTING auto_increment_increment IN CONNECTION1
18+
SET AUTO_INCREMENT_INCREMENT = 2;
19+
20+
SET DEBUG_SYNC= 'ib_after_row_insert SIGNAL opened WAIT_FOR flushed1';
21+
22+
SEND INSERT INTO t1 VALUES(NULL);
23+
24+
connect(con1, localhost, root,,);
25+
SET AUTO_INCREMENT_INCREMENT = 2;
26+
SET DEBUG_SYNC= 'now WAIT_FOR opened';
27+
SET DEBUG_SYNC= 'ib_after_row_insert_step SIGNAL flushed1 WAIT_FOR opened1';
28+
send insert into t1 values(NULL);
29+
30+
connection default;
31+
reap;
32+
SELECT * FROM t1;
33+
SHOW CREATE TABLE t1;
34+
SET DEBUG_SYNC= 'now SIGNAL opened1';
35+
36+
connection con1;
37+
reap;
38+
SELECT * FROM t1;
39+
SHOW CREATE TABLE t1;
40+
connection default;
41+
disconnect con1;
42+
43+
DROP TABLE t1;
44+
45+
# Two parallel connection with autoinc column without restart.
46+
47+
CREATE TABLE t1(id INT AUTO_INCREMENT PRIMARY KEY)ENGINE=INNODB;
48+
49+
--echo # SETTING auto_increment_increment IN CONNECTION DEFAULT
50+
SET AUTO_INCREMENT_INCREMENT = 1;
51+
INSERT INTO t1 VALUES(NULL);
52+
SELECT * FROM t1;
53+
SHOW CREATE TABLE t1;
54+
SET DEBUG_SYNC = 'now SIGNAL flushed';
55+
56+
connect(con1, localhost, root,,);
57+
58+
--echo # SETTING auto_increment_increment in connection1
59+
SET AUTO_INCREMENT_INCREMENT = 2;
60+
61+
SET DEBUG_SYNC= 'now WAIT_FOR flushed';
62+
SET DEBUG_SYNC= 'ib_after_row_insert SIGNAL opened WAIT_FOR flushed1';
63+
64+
send INSERT INTO t1 values(NULL);
65+
66+
connection default;
67+
68+
SET DEBUG_SYNC= 'now WAIT_FOR opened';
69+
SET DEBUG_SYNC= 'ib_after_row_insert_step SIGNAL flushed1 WAIT_FOR opened1';
70+
71+
send INSERT INTO t1 VALUES(NULL);
72+
73+
connection con1;
74+
reap;
75+
SELECT * FROM t1;
76+
SHOW CREATE TABLE t1;
77+
SET DEBUG_SYNC= 'now SIGNAL opened1';
78+
disconnect con1;
79+
80+
connection default;
81+
reap;
82+
SELECT * FROM t1;
83+
SHOW CREATE TABLE t1;
84+
DROP TABLE t1;
85+
SET DEBUG_SYNC='RESET';

0 commit comments

Comments
 (0)