diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-13 12:24:36 +0000 |
commit | 06eaf7232e9a920468c0f8d74dcf2fe8b555501c (patch) | |
tree | e2c7b5777f728320e5b5542b6213fd3591ba51e2 /mysql-test/main/backup_lock.result | |
parent | Initial commit. (diff) | |
download | mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.tar.xz mariadb-06eaf7232e9a920468c0f8d74dcf2fe8b555501c.zip |
Adding upstream version 1:10.11.6.upstream/1%10.11.6
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'mysql-test/main/backup_lock.result')
-rw-r--r-- | mysql-test/main/backup_lock.result | 290 |
1 files changed, 290 insertions, 0 deletions
diff --git a/mysql-test/main/backup_lock.result b/mysql-test/main/backup_lock.result new file mode 100644 index 00000000..16806148 --- /dev/null +++ b/mysql-test/main/backup_lock.result @@ -0,0 +1,290 @@ +# +# Testing which locks we get from all stages +# +BACKUP STAGE START; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_START Backup lock +BACKUP STAGE FLUSH; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_FLUSH Backup lock +BACKUP STAGE BLOCK_DDL; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_WAIT_DDL Backup lock +BACKUP STAGE BLOCK_COMMIT; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_WAIT_COMMIT Backup lock +BACKUP STAGE END; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +# +# testing BACKUP STAGE LOCK's +# +connect con1,localhost,root,,; +connect con2,localhost,root,,; +connection default; +# +# testing if BACKUP STAGE FLUSH causes deadlocks with ALTER TABLE +# +create table t1 (a int) engine=innodb; +connection con2; +backup stage start; +connection default; +start transaction; +insert into t1 values (1); +connection con1; +alter table t1 add column (j int), algorithm copy; +connection con2; +backup stage flush; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_DDL Backup lock +MDL_BACKUP_FLUSH Backup lock +MDL_SHARED_WRITE Table metadata lock test t1 +MDL_SHARED_UPGRADABLE Table metadata lock test t1 +MDL_INTENTION_EXCLUSIVE Schema metadata lock test +SET STATEMENT max_statement_time=1 FOR backup stage block_ddl; +ERROR 70100: Query execution was interrupted (max_statement_time exceeded) +backup stage block_ddl; +connection default; +commit; +SELECT * FROM t1; +a +1 +SET STATEMENT lock_wait_timeout=0 FOR INSERT INTO t1 values (2); +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +INSERT INTO t1 values (2,0);; +connection con2; +backup stage end; +connection con1; +connection default; +select * from t1; +a j +1 NULL +2 0 +drop table t1; +# Test with inline alter table, which doesn't block block_commit +create table t1 (a int) engine=innodb; +start transaction; +insert into t1 values (1); +connection con1; +alter table t1 add column (j int); +connection con2; +backup stage start; +backup stage flush; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_ALTER_COPY Backup lock +MDL_BACKUP_FLUSH Backup lock +MDL_SHARED_WRITE Table metadata lock test t1 +MDL_SHARED_UPGRADABLE Table metadata lock test t1 +MDL_INTENTION_EXCLUSIVE Schema metadata lock test +backup stage block_ddl; +backup stage block_commit; +connection default; +SELECT * FROM t1; +a +1 +commit; +connection con2; +backup stage end; +connection con1; +connection default; +drop table t1; +# +# testing if BACKUP STAGE FLUSH causes deadlocks with DROP TABLE +# +create table t1 (a int) engine=innodb; +start transaction; +insert into t1 values (1); +connection con1; +SET STATEMENT lock_wait_timeout=0 FOR DROP TABLE t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +DROP TABLE t1; +connection con2; +backup stage start; +backup stage flush; +SET STATEMENT lock_wait_timeout=0 FOR SELECT * FROM t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +backup stage block_ddl; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_WAIT_DDL Backup lock +MDL_SHARED_WRITE Table metadata lock test t1 +MDL_INTENTION_EXCLUSIVE Schema metadata lock test +backup stage end; +connection default; +commit; +connection con1; +connection default; +# +# Check if backup stage block_dll + concurrent drop table blocks select +# +create table t1 (a int) engine=innodb; +backup stage start; +backup stage block_ddl; +connection con1; +DROP TABLE t1; +connection con2; +connection con2; +SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info +WHERE TABLE_NAME NOT LIKE 'innodb_%_stats'; +LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME +MDL_BACKUP_WAIT_DDL Backup lock +SELECT * FROM t1; +a +connection default; +backup stage end; +connection con1; +connection default; +# +# Check if backup stage block_dll overrides ddl lock for drop table +# +create table t1 (a int) engine=innodb; +start transaction; +insert into t1 values (1); +connection con1; +SET STATEMENT lock_wait_timeout=0 FOR DROP TABLE t1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +DROP TABLE t1; +connection con2; +backup stage start; +backup stage flush; +backup stage block_ddl; +connection default; +commit; +connection con2; +backup stage end; +connection con1; +connection default; +# +# Check if BACKUP STAGE BLOCK_COMMIT blocks commit +# +create table t1 (a int) engine=innodb; +start transaction; +insert into t1 values (1); +connection con1; +backup stage start; +backup stage block_commit; +connection default; +commit; +connection con1; +backup stage end; +connection default; +select * from t1; +a +1 +drop table t1; +# +# Check if BACKUP STAGE BLOCK_DDL blocks create view +# +create table t1 (a int) engine=innodb; +connection con1; +backup stage start; +backup stage block_ddl; +connection default; +create view v1 as select * from t1;; +connection con1; +select count(*) = 1 from information_schema.processlist; +count(*) = 1 +0 +backup stage end; +connection default; +drop table t1; +drop view v1; +disconnect con1; +disconnect con2; +# +# Test backup stage and flush tables +# +BACKUP STAGE START ; +BACKUP STAGE BLOCK_DDL ; +FLUSH TABLES; +CREATE TEMPORARY TABLE t12345678_tmp (col1 INT); +drop table t12345678_tmp; +BACKUP STAGE END; +# +# Test BACKUP STAGES with lock timeouts +# +SET GLOBAL lock_wait_timeout=0; +CREATE TABLE t_permanent_innodb (col1 INT) ENGINE = InnoDB; +CREATE TABLE t_permanent_myisam (col1 INT) ENGINE = MyISAM; +CREATE TABLE t_permanent_aria (col1 INT) ENGINE = Aria transactional=1; +CREATE TABLE t_permanent_aria2 (col1 INT) ENGINE = Aria transactional=0; +INSERT INTO t_permanent_innodb SET col1 = 1; +INSERT INTO t_permanent_myisam SET col1 = 1; +INSERT INTO t_permanent_aria SET col1 = 1; +INSERT INTO t_permanent_aria2 SET col1 = 1; +CREATE TABLE t_con1_innodb (col1 INT) ENGINE = InnoDB; +CREATE TABLE t_con1_myisam (col1 INT) ENGINE = MyISAM; +connect con1,localhost,root,,; +connection default; +BACKUP STAGE START; +BACKUP STAGE FLUSH; +BACKUP STAGE BLOCK_DDL; +BACKUP STAGE BLOCK_COMMIT; +connection con1; +SET AUTOCOMMIT = 1; +UPDATE t_permanent_aria SET col1 = 1; +UPDATE t_permanent_innodb SET col1 = 1; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +UPDATE t_permanent_innodb SET col1 = 8; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +UPDATE t_permanent_myisam SET col1 = 8; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +UPDATE t_permanent_aria SET col1 = 8; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +UPDATE t_permanent_aria2 SET col1 = 8; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +select * from t_permanent_innodb; +col1 +1 +select * from t_permanent_myisam; +col1 +1 +select * from t_permanent_aria; +col1 +8 +select * from t_permanent_aria2; +col1 +1 +SET AUTOCOMMIT = 0; +UPDATE t_permanent_innodb SET col1 = 9; +UPDATE t_permanent_aria SET col1 = 9; +UPDATE t_permanent_myisam SET col1 = 9; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +UPDATE t_permanent_aria2 SET col1 = 9; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +DROP TABLE t_con1_innodb; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +DROP TABLE t_con1_myisam; +ERROR HY000: Lock wait timeout exceeded; try restarting transaction +connection default; +BACKUP STAGE END; +select * from t_permanent_innodb; +col1 +1 +select * from t_permanent_myisam; +col1 +1 +select * from t_permanent_aria; +col1 +9 +select * from t_permanent_aria2; +col1 +1 +DROP TABLE t_permanent_myisam, t_permanent_innodb, t_permanent_aria, t_permanent_aria2; +DROP TABLE t_con1_innodb, t_con1_myisam; +disconnect con1; +set global lock_wait_timeout=default; |