summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Midenkov <midenok@gmail.com>2019-08-20 15:24:32 +0300
committerAleksey Midenkov <midenok@gmail.com>2019-08-20 15:58:06 +0300
commit2850b8d844dccd793415aff8af646a98e1a55064 (patch)
tree570f7905d17af7752e8103b1823440c1f1f42b2b
parent6dd1d6cb90ce942de0a3648b2440d76e376bb013 (diff)
downloadmariadb-git-2850b8d844dccd793415aff8af646a98e1a55064.tar.gz
MDEV-20389 The test innodb.innodb_bug84958 fails intermittently
* Ensure no background purge is done; * Better result showing actual number in case of failure; * Higher and more safe difference threshold.
-rw-r--r--mysql-test/suite/innodb/r/innodb_bug84958.result12
-rw-r--r--mysql-test/suite/innodb/t/innodb_bug84958.test8
2 files changed, 16 insertions, 4 deletions
diff --git a/mysql-test/suite/innodb/r/innodb_bug84958.result b/mysql-test/suite/innodb/r/innodb_bug84958.result
index 1a59a10eb2f..e0c2f913407 100644
--- a/mysql-test/suite/innodb/r/innodb_bug84958.result
+++ b/mysql-test/suite/innodb/r/innodb_bug84958.result
@@ -4,13 +4,18 @@
#
# Set up the test with a procedure and a function.
#
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency= 1;
+InnoDB 0 transactions not purged
CREATE PROCEDURE insert_n(start int, end int)
BEGIN
DECLARE i INT DEFAULT start;
+START TRANSACTION;
WHILE i <= end do
INSERT INTO t1 VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = i;
SET i = i + 1;
END WHILE;
+COMMIT;
END~~
CREATE FUNCTION num_pages_get()
RETURNS INT
@@ -51,9 +56,9 @@ SET @num_pages_1 = num_pages_get();
SELECT * FROM t1 force index (b);
a b c
SET @num_pages_2= num_pages_get();
-SELECT @num_pages_2 - @num_pages_1 < 500;
-@num_pages_2 - @num_pages_1 < 500
-1
+SELECT IF(@num_pages_2 - @num_pages_1 < 5000, 'OK', @num_pages_2 - @num_pages_1) num_pages_diff;
+num_pages_diff
+OK
#
# Commit and show the final record.
#
@@ -76,6 +81,7 @@ test.t1 check status OK
#
disconnect con2;
disconnect con3;
+SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
DROP TABLE t1;
DROP PROCEDURE insert_n;
DROP FUNCTION num_pages_get;
diff --git a/mysql-test/suite/innodb/t/innodb_bug84958.test b/mysql-test/suite/innodb/t/innodb_bug84958.test
index 4456df21cb9..417aa814411 100644
--- a/mysql-test/suite/innodb/t/innodb_bug84958.test
+++ b/mysql-test/suite/innodb/t/innodb_bug84958.test
@@ -6,15 +6,20 @@
--echo #
--source include/have_innodb.inc
+SET @saved_frequency= @@GLOBAL.innodb_purge_rseg_truncate_frequency;
+SET GLOBAL innodb_purge_rseg_truncate_frequency= 1;
+--source include/wait_all_purged.inc
DELIMITER ~~;
CREATE PROCEDURE insert_n(start int, end int)
BEGIN
DECLARE i INT DEFAULT start;
+ START TRANSACTION;
WHILE i <= end do
INSERT INTO t1 VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE c = i;
SET i = i + 1;
END WHILE;
+ COMMIT;
END~~
CREATE FUNCTION num_pages_get()
@@ -64,7 +69,7 @@ SET @num_pages_1 = num_pages_get();
SELECT * FROM t1 force index (b);
SET @num_pages_2= num_pages_get();
-SELECT @num_pages_2 - @num_pages_1 < 500;
+SELECT IF(@num_pages_2 - @num_pages_1 < 5000, 'OK', @num_pages_2 - @num_pages_1) num_pages_diff;
--echo #
--echo # Commit and show the final record.
@@ -81,6 +86,7 @@ CHECK TABLE t1;
--echo #
disconnect con2;
disconnect con3;
+SET GLOBAL innodb_purge_rseg_truncate_frequency= @saved_frequency;
DROP TABLE t1;
DROP PROCEDURE insert_n;
DROP FUNCTION num_pages_get;