From d58437d1956b2fd92197beac2e9c869ef968eba7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 29 Aug 2019 18:25:24 +0300 Subject: [PATCH] MDEV-20149 innodb.innodb-system-table-view fails with wrong result The test occasionally fails with different table reference count due to purge activity after INSERT operations (MDEV-12288). Wait for purge before accessing dict_table_t::n_ref_count. --- mysql-test/suite/innodb/r/innodb-system-table-view.result | 5 +++++ mysql-test/suite/innodb/t/innodb-system-table-view.test | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/mysql-test/suite/innodb/r/innodb-system-table-view.result b/mysql-test/suite/innodb/r/innodb-system-table-view.result index 09ed89b483d..b8d061d3214 100644 --- a/mysql-test/suite/innodb/r/innodb-system-table-view.result +++ b/mysql-test/suite/innodb/r/innodb-system-table-view.result @@ -1,3 +1,5 @@ +SET @save_frequency=@@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; SELECT table_id INTO @table_stats_id FROM information_schema.innodb_sys_tables WHERE name = 'mysql/innodb_table_stats'; SELECT table_id INTO @index_stats_id FROM information_schema.innodb_sys_tables @@ -108,6 +110,7 @@ SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS; ID FOR_COL_NAME REF_COL_NAME POS test/constraint_test parent_id id 0 INSERT INTO parent VALUES(1); +InnoDB 0 transactions not purged SELECT name, num_rows, ref_count FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE name LIKE "%parent"; @@ -169,6 +172,7 @@ INSERT INTO parent VALUES(1, 9); SELECT * FROM parent WHERE id IN (SELECT id FROM parent); id newid 1 9 +InnoDB 0 transactions not purged SELECT name, num_rows, ref_count FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS WHERE name LIKE "%parent"; @@ -176,3 +180,4 @@ name num_rows ref_count test/parent 1 2 DROP TABLE child; DROP TABLE parent; +SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency; diff --git a/mysql-test/suite/innodb/t/innodb-system-table-view.test b/mysql-test/suite/innodb/t/innodb-system-table-view.test index 087c0a22eca..4f5111eafbc 100644 --- a/mysql-test/suite/innodb/t/innodb-system-table-view.test +++ b/mysql-test/suite/innodb/t/innodb-system-table-view.test @@ -4,6 +4,8 @@ --source include/innodb_page_size_small.inc +SET @save_frequency=@@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency=1; LET $MYSQLD_DATADIR = `select @@datadir`; LET $INNODB_PAGE_SIZE = `select @@innodb_page_size`; @@ -70,6 +72,8 @@ SELECT * FROM INFORMATION_SCHEMA.INNODB_SYS_FOREIGN_COLS; # INNODB_SYS_TABLESTATS INSERT INTO parent VALUES(1); +--source include/wait_all_purged.inc + --sorted_result SELECT name, num_rows, ref_count FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS @@ -126,6 +130,8 @@ INSERT INTO parent VALUES(1, 9); --sorted_result SELECT * FROM parent WHERE id IN (SELECT id FROM parent); +--source include/wait_all_purged.inc + --sorted_result SELECT name, num_rows, ref_count FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESTATS @@ -134,3 +140,4 @@ WHERE name LIKE "%parent"; DROP TABLE child; DROP TABLE parent; +SET GLOBAL innodb_purge_rseg_truncate_frequency=@save_frequency;