backup_locks.result 5.51 KB
#
# Test lock taken
#
BACKUP LOCK test.t1;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
LOCK_MODE	LOCK_TYPE	TABLE_SCHEMA	TABLE_NAME
MDL_SHARED_HIGH_PRIO	Table metadata lock	test	t1
BACKUP UNLOCK;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
LOCK_MODE	LOCK_TYPE	TABLE_SCHEMA	TABLE_NAME
BACKUP LOCK t1;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
LOCK_MODE	LOCK_TYPE	TABLE_SCHEMA	TABLE_NAME
MDL_SHARED_HIGH_PRIO	Table metadata lock	test	t1
BACKUP UNLOCK;
BACKUP LOCK non_existing.t1;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
LOCK_MODE	LOCK_TYPE	TABLE_SCHEMA	TABLE_NAME
MDL_SHARED_HIGH_PRIO	Table metadata lock	non_existing	t1
BACKUP UNLOCK;
#
# Test that backup lock protects against ddl
#
connect  con1,localhost,root,,;
connection default;
create table t1 (a int) engine=innodb;
insert into t1 values (1);
backup lock t1;
select * from t1;
a
1
connection con1;
drop table t1;
connection default;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info;
LOCK_MODE	LOCK_TYPE	TABLE_SCHEMA	TABLE_NAME
MDL_SHARED_HIGH_PRIO	Table metadata lock	test	t1
MDL_INTENTION_EXCLUSIVE	Schema metadata lock	test	
select * from t1;
ERROR 40001: Deadlock found when trying to get lock; try restarting transaction
backup unlock;
#
# BACKUP LOCK and BACKUP UNLOCK are not allowed in procedures.
#
CREATE PROCEDURE p_BACKUP_LOCK()
BEGIN
BACKUP LOCK;
END|
ERROR 0A000: BACKUP LOCK is not allowed in stored procedures
CREATE PROCEDURE p_BACKUP_UNLOCK()
BEGIN
BACKUP UNLOCK;
END|
ERROR 0A000: BACKUP UNLOCK is not allowed in stored procedures
#
# BACKUP STAGE doesn't work when a BACKUP LOCK is active.
#
CREATE TABLE t1 (a INT);
BACKUP LOCK t1;
BACKUP STAGE START;
ERROR HY000: Can't execute the query because you have a conflicting read lock
BACKUP UNLOCK;
DROP TABLE t1;
#
# FLUSH TABLES WITH READ LOCK is not allowed when BACKUP LOCK is active.
#
CREATE TABLE t1 (a INT);
BACKUP LOCK t1;
FLUSH TABLES t1 WITH READ LOCK;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
BACKUP UNLOCK;
BACKUP LOCK t1;
FLUSH TABLES WITH READ LOCK;
BACKUP UNLOCK;
UNLOCK TABLES;
DROP TABLE t1;
#
# MDEV-20945 BACKUP UNLOCK assertion failures.
#
# Scenario 1.
CREATE TABLE t1 (a INT);
BACKUP LOCK t1;
FLUSH TABLE t1 WITH READ LOCK;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
UNLOCK TABLES;
BACKUP UNLOCK;
DROP TABLE t1;
# Scenario 2.
CREATE TABLE t1 (a INT);
CREATE TABLE t2 (b INT);
LOCK TABLES t2 AS a2 WRITE;
BACKUP LOCK t1;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
UNLOCK TABLES;
INSERT INTO t1 VALUES(0);
# restart
DROP TABLE t1;
DROP TABLE t2;
# Scenario 3.
CREATE TEMPORARY TABLE t3 (c INT);
BACKUP LOCK t1;
SET @@SESSION.profiling=ON;
CREATE TABLE t1 (c INT);
ERROR HY000: Can't execute the query because you have a conflicting read lock
LOCK TABLES t3 AS a1 READ, t1 AS a3 READ, t3 AS a5 READ LOCAL;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
UNLOCK TABLE;
# restart
# Scenario 4.
CREATE TABLE t (c INT);
BACKUP LOCK not_existing.t;
LOCK TABLES t WRITE;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
UNLOCK TABLES;
# restart
DROP TABLE t;
# Scenario 5.
BACKUP LOCK t1;
CREATE TABLE t2 (c1 TIME, c2 TIME, c3 DATE, KEY(c1, c2));
ERROR HY000: Can't execute the query because you have a conflicting read lock
LOCK TABLE t2 READ;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
# restart
# Scenario 6.
BACKUP LOCK t;
CREATE VIEW v AS SELECT 1;
ERROR HY000: Can't execute the query because you have a conflicting read lock
LOCK TABLES v READ;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
START TRANSACTION READ ONLY;
BACKUP LOCK t;
# restart
# Scenario 7.
SET SQL_MODE='';
SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.u;
CREATE TABLE t (a INT) ENGINE=Aria;
ERROR HY000: Can't execute the query because you have a conflicting read lock
CREATE TEMPORARY TABLE IF NOT EXISTS s (c INT) ENGINE=Aria;
LOCK TABLES s AS a READ LOCAL,t AS b WRITE;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
SET STATEMENT max_statement_time=180 FOR BACKUP LOCK test.u;
# restart
#
connection con1;
connection default;
disconnect con1;
show tables;
Tables_in_test
#
#  MDEV-22879 SIGSEGV (or hang) in free/my_free from
# _ma_end_block_record (on optimized builds)
#
SET STATEMENT max_statement_time=20 FOR BACKUP LOCK test.t1;
CREATE TABLE IF NOT EXISTS t3 (c1 CHAR(1) BINARY,c2 SMALLINT(10),c3 NUMERIC(1,0), PRIMARY KEY(c1(1))) ENGINE=InnoDB;
ERROR HY000: Can't execute the query because you have a conflicting read lock
BACKUP UNLOCK;
CREATE TABLE IF NOT EXISTS t3 (c1 CHAR(1) BINARY,c2 SMALLINT(10),c3 NUMERIC(1,0), PRIMARY KEY(c1(1))) ENGINE=InnoDB;
SET STATEMENT max_statement_time=20 FOR BACKUP LOCK test.t1;
LOCK TABLES t3 AS a2 WRITE, t3 AS a1 READ LOCAL;
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
DROP TABLE t3;
ERROR HY000: Can't execute the query because you have a conflicting read lock
BACKUP UNLOCK;
DROP TABLE t3;
#
# End of MariaDB 10.4 tests
#