35 lines
890 B
Plaintext

#
# Bug#25966845 INSERT ON DUPLICATE KEY GENERATE A DEADLOCK
#
CREATE TABLE t1(f1 int primary key,
f2 int, f3 int, unique key(f2))engine=innodb;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`f1` int(11) NOT NULL,
`f2` int(11) DEFAULT NULL,
`f3` int(11) DEFAULT NULL,
PRIMARY KEY (`f1`),
UNIQUE KEY `f2` (`f2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
INSERT INTO t1(f1, f2, f3) VALUES(1, 10, 100);
# Connection default
BEGIN;
INSERT INTO t1 VALUES(2, 20, 300) ON DUPLICATE KEY UPDATE f3 = 500;
# Connection other:
BEGIN;
SET DEBUG_SYNC = 'ib_after_row_insert_step SIGNAL default_commit';
INSERT INTO t1 VALUES(2, 10, 200) ON DUPLICATE KEY UPDATE f3 = 120;
# Connection default
SET DEBUG_SYNC = 'now WAIT_FOR default_commit';
COMMIT;
# Connection other
COMMIT;
# Verify Results:
SELECT * FROM t1;
f1 f2 f3
1 10 100
2 20 120
SET DEBUG_SYNC ='RESET';
DROP TABLE t1;