# # Test of wrong call to unlock_row # MDEV-5629 Failing assertion: state == TRX_STATE_NOT_STARTED on # concurrent CREATE OR REPLACE and transactional UPDATE # --source include/have_innodb.inc CREATE TABLE t1 (a INT, b INT) ENGINE=InnoDB; INSERT INTO t1 VALUES (1,1),(2,2); CREATE TABLE t2 (c INT, d INT) ENGINE=InnoDB; INSERT INTO t2 VALUES (1,1), (2,2); CREATE TABLE t3 (e INT) ENGINE=InnoDB; CREATE TABLE t4 ENGINE=InnoDB AS SELECT * FROM t2; --connect (con11,localhost,root,,test) BEGIN; UPDATE t1 SET a = 0 WHERE a = ( SELECT e FROM t3 ); --connect (con12,localhost,root,,test) --send UPDATE t4 SET d = 1 WHERE d in ( SELECT a FROM t1 ) ORDER BY c LIMIT 6; --connection con11 # Wait for con12 to start waiting for con11 let $wait_condition= select count(*) = 1 from information_schema.innodb_trx where trx_state = "lock wait" and trx_query like "%SELECT a FROM t1%"; --source include/wait_condition.inc UPDATE t4 SET d = 9; --connection con12 --error ER_LOCK_DEADLOCK --reap --connection con11 commit; --connection default --disconnect con12 --disconnect con11 drop table t1,t2,t3,t4; call mtr.add_suppression("Deadlock found when trying to get lock; try restarting transaction"); call mtr.add_suppression("Sort aborted.*");