From 796486d19b7eede58566620dfd110d24ac723218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20M=C3=A4kel=C3=A4?= Date: Thu, 16 May 2019 14:17:22 +0300 Subject: [PATCH] MDEV-19485: Add a test case The bug was introduced in MariaDB 10.4.0 by commit 0e5a4ac2532c64a545796c787354dc41d61d0e62 but it is good to have a regression test for this scenario in all applicable MariaDB versions. Cover the purge of an undo log record that was written before the completion of ADD SPATIAL INDEX. --- .../suite/innodb_gis/r/rtree_add_index.result | 13 ++++++++++++ .../suite/innodb_gis/t/rtree_add_index.test | 20 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 mysql-test/suite/innodb_gis/r/rtree_add_index.result create mode 100644 mysql-test/suite/innodb_gis/t/rtree_add_index.test diff --git a/mysql-test/suite/innodb_gis/r/rtree_add_index.result b/mysql-test/suite/innodb_gis/r/rtree_add_index.result new file mode 100644 index 00000000000..dbd804b18bd --- /dev/null +++ b/mysql-test/suite/innodb_gis/r/rtree_add_index.result @@ -0,0 +1,13 @@ +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; +CREATE TABLE t1 (g MULTIPOINT NOT NULL) ENGINE=InnoDB; +INSERT INTO t1 VALUES (''); +connect purge_control,localhost,root; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +connection default; +DELETE FROM t1; +ALTER TABLE t1 ADD SPATIAL INDEX (g); +disconnect purge_control; +InnoDB 0 transactions not purged +DROP TABLE t1; +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency; diff --git a/mysql-test/suite/innodb_gis/t/rtree_add_index.test b/mysql-test/suite/innodb_gis/t/rtree_add_index.test new file mode 100644 index 00000000000..cbc82f62a70 --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_add_index.test @@ -0,0 +1,20 @@ +--source include/have_innodb.inc + +SET @saved_frequency = @@GLOBAL.innodb_purge_rseg_truncate_frequency; +SET GLOBAL innodb_purge_rseg_truncate_frequency = 1; + +CREATE TABLE t1 (g MULTIPOINT NOT NULL) ENGINE=InnoDB; +INSERT INTO t1 VALUES (''); + +connect purge_control,localhost,root; +START TRANSACTION WITH CONSISTENT SNAPSHOT; +connection default; + +DELETE FROM t1; + +ALTER TABLE t1 ADD SPATIAL INDEX (g); + +disconnect purge_control; +--source ../../innodb/include/wait_all_purged.inc +DROP TABLE t1; +SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency;