1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-4750 fixup: main.backup_lock result difference

This test may occasionally display MDL for the
InnoDB persistent statistics tables. Filter them out.
This fixes up commit 9608773f75.
This commit is contained in:
Marko Mäkelä
2021-09-03 18:48:38 +03:00
parent 4690442411
commit c4ebfe22f9
2 changed files with 30 additions and 18 deletions

View File

@ -2,23 +2,28 @@
# Testing which locks we get from all stages # Testing which locks we get from all stages
# #
BACKUP STAGE START; BACKUP STAGE START;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_START Backup lock MDL_BACKUP_START Backup lock
BACKUP STAGE FLUSH; BACKUP STAGE FLUSH;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_FLUSH Backup lock MDL_BACKUP_FLUSH Backup lock
BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_DDL;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_WAIT_DDL Backup lock MDL_BACKUP_WAIT_DDL Backup lock
BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE BLOCK_COMMIT;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_WAIT_COMMIT Backup lock MDL_BACKUP_WAIT_COMMIT Backup lock
BACKUP STAGE END; BACKUP STAGE END;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
# #
# testing BACKUP STAGE LOCK's # testing BACKUP STAGE LOCK's
@ -39,7 +44,8 @@ connection con1;
alter table t1 add column (j int), algorithm copy; alter table t1 add column (j int), algorithm copy;
connection con2; connection con2;
backup stage flush; backup stage flush;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_DDL Backup lock MDL_BACKUP_DDL Backup lock
MDL_BACKUP_FLUSH Backup lock MDL_BACKUP_FLUSH Backup lock
@ -75,7 +81,8 @@ alter table t1 add column (j int);
connection con2; connection con2;
backup stage start; backup stage start;
backup stage flush; backup stage flush;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_ALTER_COPY Backup lock MDL_BACKUP_ALTER_COPY Backup lock
MDL_BACKUP_FLUSH Backup lock MDL_BACKUP_FLUSH Backup lock
@ -110,7 +117,8 @@ backup stage flush;
SET STATEMENT lock_wait_timeout=0 FOR SELECT * FROM t1; SET STATEMENT lock_wait_timeout=0 FOR SELECT * FROM t1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction ERROR HY000: Lock wait timeout exceeded; try restarting transaction
backup stage block_ddl; backup stage block_ddl;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_WAIT_DDL Backup lock MDL_BACKUP_WAIT_DDL Backup lock
MDL_SHARED_WRITE Table metadata lock test t1 MDL_SHARED_WRITE Table metadata lock test t1
@ -130,7 +138,8 @@ connection con1;
DROP TABLE t1; DROP TABLE t1;
connection con2; connection con2;
connection con2; connection con2;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; 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 LOCK_MODE LOCK_TYPE TABLE_SCHEMA TABLE_NAME
MDL_BACKUP_WAIT_DDL Backup lock MDL_BACKUP_WAIT_DDL Backup lock
SELECT * FROM t1; SELECT * FROM t1;

View File

@ -10,16 +10,19 @@
--echo # Testing which locks we get from all stages --echo # Testing which locks we get from all stages
--echo # --echo #
let $mdl= LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info
WHERE TABLE_NAME NOT LIKE 'innodb_%_stats';
BACKUP STAGE START; BACKUP STAGE START;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
BACKUP STAGE FLUSH; BACKUP STAGE FLUSH;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
BACKUP STAGE BLOCK_DDL; BACKUP STAGE BLOCK_DDL;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
BACKUP STAGE BLOCK_COMMIT; BACKUP STAGE BLOCK_COMMIT;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
BACKUP STAGE END; BACKUP STAGE END;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
--echo # --echo #
--echo # testing BACKUP STAGE LOCK's --echo # testing BACKUP STAGE LOCK's
@ -54,7 +57,7 @@ let $wait_condition=
where state = "Waiting for table metadata lock"; where state = "Waiting for table metadata lock";
--source include/wait_condition.inc --source include/wait_condition.inc
backup stage flush; backup stage flush;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
# #
# Do first test with max_statement_time, other tests later are done with # Do first test with max_statement_time, other tests later are done with
# lock_wait_timeout. This is mostly to ensure that both methods works # lock_wait_timeout. This is mostly to ensure that both methods works
@ -103,7 +106,7 @@ let $wait_condition=
--source include/wait_condition.inc --source include/wait_condition.inc
backup stage start; backup stage start;
backup stage flush; backup stage flush;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
backup stage block_ddl; backup stage block_ddl;
backup stage block_commit; backup stage block_commit;
connection default; connection default;
@ -146,7 +149,7 @@ let $wait_condition=
SET STATEMENT lock_wait_timeout=0 FOR SELECT * FROM t1; SET STATEMENT lock_wait_timeout=0 FOR SELECT * FROM t1;
backup stage block_ddl; backup stage block_ddl;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
backup stage end; backup stage end;
connection default; connection default;
@ -170,7 +173,7 @@ let $wait_condition=
where state = "Waiting for backup lock"; where state = "Waiting for backup lock";
--source include/wait_condition.inc --source include/wait_condition.inc
connection con2; connection con2;
SELECT LOCK_MODE, LOCK_TYPE, TABLE_SCHEMA, TABLE_NAME FROM information_schema.metadata_lock_info; eval SELECT $mdl;
# Check that select's are not blocked # Check that select's are not blocked
SELECT * FROM t1; SELECT * FROM t1;
connection default; connection default;