mariadb/mysql-test/suite/innodb/r/lock_insert_into_empty.result
Thirunarayanan Balathandayuthapani 2c5f3bbe78 MDEV-14193 innodb.log_file_name failed in buildbot with exception
Problem:
=======
- innodb.log_file_name fails if it executes after
innodb.lock_insert_into_empty in few cases.
innodb.lock_insert_into_empty test case failed to
cleanup the table t2. Rollback of create..select fails
to remove the table when it fails to acquire the
innodb statistics table. This leads to rename table
in log_file_name test case fails.

Solution:
========
- Cleanup the table t2 explictly after resetting
innodb_lock_wait_timeout variable in
innodb.lock_insert_into_empty test case.
2024-02-26 19:04:14 +05:30

62 lines
1.8 KiB
Text

CREATE TABLE t1 (a INT PRIMARY KEY) ENGINE=InnoDB;
CREATE TABLE t2 (a INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 VALUES(0);
BEGIN;
DELETE FROM t1;
INSERT INTO t2 VALUES(1),(1);
ERROR 23000: Duplicate entry '1' for key 'PRIMARY'
BEGIN;
SELECT * FROM t2 LOCK IN SHARE MODE;
a
connect con1,localhost,root,,;
SET innodb_lock_wait_timeout=0;
INSERT INTO t2 VALUES(2);
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
connection default;
ROLLBACK;
connection con1;
INSERT INTO t2 VALUES(3);
COMMIT;
disconnect con1;
connection default;
SELECT * FROM t1;
a
SELECT * FROM t2;
a
3
DROP TABLE t1, t2;
#
# MDEV-24700 Assertion "lock not found"==0 in lock_table_x_unlock()
#
SET FOREIGN_KEY_CHECKS=OFF;
CREATE TABLE t1 (id INT PRIMARY KEY, f INT REFERENCES nonexistent(x))
ENGINE=InnoDB;
SET FOREIGN_KEY_CHECKS=ON;
BEGIN;
INSERT IGNORE INTO t1 VALUES (1,11);
Warnings:
Warning 1452 Cannot add or update a child row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`f`) REFERENCES `nonexistent` (`x`))
REPLACE INTO t1 VALUES (1,12);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`t1`, CONSTRAINT `t1_ibfk_1` FOREIGN KEY (`f`) REFERENCES `nonexistent` (`x`))
COMMIT;
DROP TABLE t1;
#
# MDEV-25942 Assertion failed in trx_t::drop_table()
#
CREATE TABLE t1 (k INT PRIMARY KEY) ENGINE=InnoDB;
INSERT INTO t1 SET k=1;
START TRANSACTION;
INSERT INTO t1 SET k=2;
SELECT count(*) > 0 FROM mysql.innodb_index_stats lock in share mode;
count(*) > 0
1
connect con1,localhost,root,,test;
SET innodb_lock_wait_timeout=0;
CREATE TABLE t2 (pk INT AUTO_INCREMENT PRIMARY KEY) ENGINE=InnoDB
AS SELECT k FROM t1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
disconnect con1;
connection default;
SET innodb_lock_wait_timeout=default;
DROP TABLE t1;
DROP TABLE IF EXISTS t2;