summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/include/index_merge1.inc52
-rw-r--r--mysql-test/include/index_merge2.inc48
-rw-r--r--mysql-test/include/index_merge_2sweeps.inc24
-rw-r--r--mysql-test/include/index_merge_ror.inc5
-rw-r--r--mysql-test/include/index_merge_ror_cpk.inc12
-rw-r--r--mysql-test/main/drop_bad_db_type.result3
-rw-r--r--mysql-test/main/drop_bad_db_type.test4
-rw-r--r--mysql-test/main/index_merge_innodb.result75
-rw-r--r--mysql-test/main/index_merge_innodb.test52
-rw-r--r--mysql-test/main/index_merge_myisam.result76
-rw-r--r--mysql-test/main/index_merge_myisam.test14
-rw-r--r--mysql-test/main/log_slow_debug.result3
-rw-r--r--mysql-test/main/log_slow_debug.test3
-rw-r--r--mysql-test/main/partition_debug_sync.result1
-rw-r--r--mysql-test/main/partition_debug_sync.test3
-rw-r--r--mysql-test/main/sp-code.result3
-rw-r--r--mysql-test/main/sp-code.test3
-rw-r--r--mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result45
-rw-r--r--mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test64
-rw-r--r--mysql-test/suite/parts/inc/partition_crash_add.inc21
-rw-r--r--mysql-test/suite/parts/inc/partition_crash_change.inc25
-rw-r--r--mysql-test/suite/parts/inc/partition_crash_drop.inc19
-rw-r--r--mysql-test/suite/parts/inc/partition_crash_exchange.inc19
-rw-r--r--mysql-test/suite/parts/inc/partition_fail_add.inc21
-rw-r--r--mysql-test/suite/parts/inc/partition_fail_change.inc25
-rw-r--r--mysql-test/suite/parts/inc/partition_fail_drop.inc19
-rw-r--r--mysql-test/suite/parts/inc/partition_fail_exchange.inc19
-rw-r--r--mysql-test/suite/parts/r/partition_debug.result42
-rw-r--r--mysql-test/suite/parts/r/partition_debug_innodb.result169
-rw-r--r--mysql-test/suite/parts/r/partition_debug_myisam.result131
-rw-r--r--mysql-test/suite/parts/t/partition_debug.test7
-rw-r--r--mysql-test/suite/parts/t/partition_debug_innodb.test7
-rw-r--r--mysql-test/suite/parts/t/partition_debug_myisam.test4
-rw-r--r--mysql-test/suite/sys_vars/r/sysvars_innodb.result12
-rw-r--r--storage/innobase/buf/buf0dblwr.cc10
-rw-r--r--storage/innobase/buf/buf0flu.cc2
-rw-r--r--storage/innobase/handler/ha_innodb.cc41
-rw-r--r--storage/innobase/ibuf/ibuf0ibuf.cc6
-rw-r--r--storage/innobase/include/que0que.h3
-rw-r--r--storage/innobase/include/srv0srv.h17
-rw-r--r--storage/innobase/include/trx0purge.h7
-rw-r--r--storage/innobase/row/row0purge.cc21
-rw-r--r--storage/innobase/row/row0vers.cc1
-rw-r--r--storage/innobase/srv/srv0srv.cc83
-rw-r--r--storage/innobase/trx/trx0purge.cc8
-rw-r--r--storage/tokudb/mysql-test/tokudb_parts/r/partition_debug_tokudb.result168
46 files changed, 757 insertions, 640 deletions
diff --git a/mysql-test/include/index_merge1.inc b/mysql-test/include/index_merge1.inc
index 0fb94b96ab4..b168a767d7c 100644
--- a/mysql-test/include/index_merge1.inc
+++ b/mysql-test/include/index_merge1.inc
@@ -2,11 +2,10 @@
#
# Index merge tests
#
-# The variables
-# $engine_type -- storage engine to be tested
+# The variable
# $merge_table_support -- 1 storage engine supports merge tables
# -- 0 storage engine does not support merge tables
-# have to be set before sourcing this script.
+# has to be set before sourcing this script.
#
# Note: The comments/expectations refer to MyISAM.
# They might be not valid for other storage engines.
@@ -16,15 +15,10 @@
# old name was t/index_merge.test
# main code went into include/index_merge1.inc
#
+--source include/have_sequence.inc
--echo #---------------- Index merge test 1 -------------------------------------------
-eval SET SESSION STORAGE_ENGINE = $engine_type;
-
---disable_warnings
-drop table if exists t0, t1, t2, t3, t4;
---enable_warnings
-
# Create and fill a table with simple keys
create table t0
(
@@ -32,20 +26,7 @@ create table t0
INDEX i1(key1)
);
---disable_query_log
-insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8);
-
-let $1=7;
-set @d=8;
-begin;
-while ($1)
-{
- eval insert into t0 select key1+@d from t0;
- eval set @d=@d*2;
- dec $1;
-}
-commit;
---enable_query_log
+insert into t0(key1) select seq from seq_1_to_1024;
alter table t0 add key2 int not null, add index i2(key2);
alter table t0 add key3 int not null, add index i3(key3);
@@ -217,7 +198,7 @@ create table t4 (
index i2_2(key2, key2_1)
);
-insert into t4 select key1,key1,key1 div 10, key1 % 10, key1 % 10, key1 from t0;
+insert into t4 select seq,seq,seq div 10, seq % 10, seq % 10, seq from seq_1_to_1024;
# the following will be handled by index_merge:
select * from t4 where key1a = 3 or key1b = 4;
@@ -392,14 +373,13 @@ if ($merge_table_support)
#
# BUG#17314: Index_merge/intersection not choosen by the optimizer for MERGE tables
#
-create table t0 (a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
a int, b int,
filler1 char(200), filler2 char(200),
key(a),key(b)
);
-insert into t1 select @v:= A.a, @v, 't1', 'filler2' from t0 A, t0 B, t0 C;
+insert into t1 select @v:= seq % 10, @v, 't1', 'filler2' from seq_1_to_1000;
+
create table t2 like t1;
create table t3 (
@@ -413,8 +393,7 @@ explain select * from t1 where a=1 and b=1;
--replace_column 9 #
explain select * from t3 where a=1 and b=1;
-drop table t3;
-drop table t0, t1, t2;
+drop table t1, t2, t3;
}
#
@@ -513,16 +492,13 @@ DROP TABLE t1;
--echo #
--echo # BUG#40974: Incorrect query results when using clause evaluated using range check
--echo #
-create table t0 (a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-
create table t1 (a int);
insert into t1 values (1),(2);
create table t2(a int, b int);
insert into t2 values (1,1), (2, 1000);
create table t3 (a int, b int, filler char(100), key(a), key(b));
-insert into t3 select 1000, 1000,'filler' from t0 A, t0 B, t0 C;
+insert into t3 select 1000, 1000,'filler' from seq_1_to_1000;
insert into t3 values (1,1,'data');
insert into t3 values (1,1,'data');
-- echo The plan should be ALL/ALL/ALL(Range checked for each record (index map: 0x3)
@@ -534,20 +510,14 @@ select * from t1
where exists (select 1 from t2, t3
where t2.a=t1.a and (t3.a=t2.b or t3.b=t2.b or t3.b=t2.b+1));
-drop table t0, t1, t2, t3;
+drop table t1, t2, t3;
--echo #
--echo # BUG#44810: index merge and order by with low sort_buffer_size
--echo # crashes server!
--echo #
CREATE TABLE t1(a VARCHAR(128),b VARCHAR(128),KEY(A),KEY(B));
-INSERT INTO t1 VALUES (REPEAT('a',128),REPEAT('b',128));
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
+INSERT INTO t1 SELECT REPEAT('a',128),REPEAT('b',128) FROM seq_1_to_64;
SET SESSION sort_buffer_size=1024*8;
EXPLAIN
SELECT * FROM t1 FORCE INDEX(a,b) WHERE a LIKE 'a%' OR b LIKE 'b%'
diff --git a/mysql-test/include/index_merge2.inc b/mysql-test/include/index_merge2.inc
index ae9adac882f..ecb16f54bbc 100644
--- a/mysql-test/include/index_merge2.inc
+++ b/mysql-test/include/index_merge2.inc
@@ -2,10 +2,6 @@
#
# Index merge tests
#
-# The variable
-# $engine_type -- storage engine to be tested
-# has to be set before sourcing this script.
-#
# Note: The comments/expectations refer to InnoDB.
# They might be not valid for other storage engines.
#
@@ -14,15 +10,10 @@
# old name was t/index_merge_innodb.test
# main code went into include/index_merge2.inc
#
+--source include/have_sequence.inc
--echo #---------------- Index merge test 2 -------------------------------------------
-eval SET SESSION STORAGE_ENGINE = $engine_type;
-
---disable_warnings
-drop table if exists t1,t2;
---enable_warnings
-
create table t1
(
key1 int not null,
@@ -32,16 +23,7 @@ create table t1
INDEX i2(key2)
);
---disable_query_log
-let $1=200;
-begin;
-while ($1)
-{
- eval insert into t1 values (200-$1, $1);
- dec $1;
-}
-commit;
---enable_query_log
+INSERT INTO t1 SELECT seq,200-seq FROM seq_0_to_200;
# No primary key
explain select * from t1 where key1 < 5 or key2 > 197;
@@ -80,16 +62,8 @@ create table t1 (
index (key2)
);
show warnings;
---disable_query_log
-let $1=30;
-begin;
-while ($1)
-{
- eval insert into t1 (key1, key2, filler) values ($1/4, $1/8, 'filler-data');
- dec $1;
-}
-commit;
---enable_query_log
+INSERT INTO t1 (key1, key2, filler)
+SELECT seq/4, seq/8, 'filler-data' FROM seq_30_to_0;
explain select pk from t1 where key1 = 1 and key2 = 1;
select pk from t1 where key2 = 1 and key1 = 1;
select pk from t1 ignore index(key1,key2) where key2 = 1 and key1 = 1;
@@ -331,19 +305,7 @@ create table t1
key3 int not null default 0
);
-insert into t1(key1) values (1),(2),(3),(4),(5),(6),(7),(8);
-
-let $1=7;
-set @d=8;
-begin;
-while ($1)
-{
- eval insert into t1 (key1) select key1+@d from t1;
- eval set @d=@d*2;
- dec $1;
-}
-commit;
-
+insert into t1(key1) select seq from seq_1_to_1024;
alter table t1 add index i2(key2);
alter table t1 add index i3(key3);
update t1 set key2=key1,key3=key1;
diff --git a/mysql-test/include/index_merge_2sweeps.inc b/mysql-test/include/index_merge_2sweeps.inc
index ef356e12969..836f83795a9 100644
--- a/mysql-test/include/index_merge_2sweeps.inc
+++ b/mysql-test/include/index_merge_2sweeps.inc
@@ -2,24 +2,15 @@
#
# 2-sweeps read Index_merge test
#
-# The variable
-# $engine_type -- storage engine to be tested
-# has to be set before sourcing this script.
-#
# Last update:
# 2006-08-02 ML test refactored
# old name was index_merge_innodb2.test
# main code went into include/index_merge_2sweeps.inc
#
+--source include/have_sequence.inc
--echo #---------------- 2-sweeps read Index merge test 2 -------------------------------
-eval SET SESSION STORAGE_ENGINE = $engine_type;
-
---disable_warnings
-drop table if exists t1;
---enable_warnings
-
create table t1 (
pk int primary key,
key1 int,
@@ -30,17 +21,8 @@ create table t1 (
index(key2)
);
-
---disable_query_log
-begin;
-let $1=1000;
-while ($1)
-{
- eval insert into t1 values($1, $1, $1, 'filler-data','filler-data-2');
- dec $1;
-}
-commit;
---enable_query_log
+insert into t1 select seq, seq, seq, 'filler-data', 'filler-data-2'
+from seq_1000_to_1;
select * from t1 where (key1 >= 2 and key1 <= 10) or (pk >= 4 and pk <=8 );
diff --git a/mysql-test/include/index_merge_ror.inc b/mysql-test/include/index_merge_ror.inc
index 3ec6e342994..8a55ef1a67d 100644
--- a/mysql-test/include/index_merge_ror.inc
+++ b/mysql-test/include/index_merge_ror.inc
@@ -17,11 +17,6 @@
--echo #---------------- ROR-index_merge tests -----------------------
-eval SET SESSION STORAGE_ENGINE = $engine_type;
-
---disable_warnings
-drop table if exists t0,t1,t2;
---enable_warnings
create table t1
(
/* Field names reflect value(rowid) distribution, st=STairs, swt= SaWTooth */
diff --git a/mysql-test/include/index_merge_ror_cpk.inc b/mysql-test/include/index_merge_ror_cpk.inc
index 0a307aa4fdb..9ebca3cd22f 100644
--- a/mysql-test/include/index_merge_ror_cpk.inc
+++ b/mysql-test/include/index_merge_ror_cpk.inc
@@ -2,10 +2,6 @@
#
# Clustered PK ROR-index_merge tests
#
-# The variable
-# $engine_type -- storage engine to be tested
-# has to be set before sourcing this script.
-#
# Note: The comments/expectations refer to InnoDB.
# They might be not valid for other storage engines.
#
@@ -15,13 +11,9 @@
# main code went into include/index_merge_ror_cpk.inc
#
---echo #---------------- Clustered PK ROR-index_merge tests -----------------------------
-
-eval SET SESSION STORAGE_ENGINE = $engine_type;
+--source include/have_sequence.inc
---disable_warnings
-drop table if exists t1;
---enable_warnings
+--echo #---------------- Clustered PK ROR-index_merge tests -----------------------------
create table t1
(
diff --git a/mysql-test/main/drop_bad_db_type.result b/mysql-test/main/drop_bad_db_type.result
index d44af1e8808..1b691957877 100644
--- a/mysql-test/main/drop_bad_db_type.result
+++ b/mysql-test/main/drop_bad_db_type.result
@@ -1,3 +1,4 @@
+SET @save_dbug = @@debug_dbug;
set debug_dbug='+d,unstable_db_type';
install soname 'ha_archive';
create table t1 (a int) engine=archive;
@@ -32,4 +33,4 @@ t1.frm
drop table t1;
db.opt
uninstall soname 'ha_archive';
-set debug_dbug='-d,unstable_db_type';
+set debug_dbug=@save_dbug;
diff --git a/mysql-test/main/drop_bad_db_type.test b/mysql-test/main/drop_bad_db_type.test
index 00b79dabddf..6a3ac6ae00f 100644
--- a/mysql-test/main/drop_bad_db_type.test
+++ b/mysql-test/main/drop_bad_db_type.test
@@ -7,6 +7,7 @@ if (!$HA_ARCHIVE_SO) {
let $mysqld_datadir= `select @@datadir`;
+SET @save_dbug = @@debug_dbug;
set debug_dbug='+d,unstable_db_type';
install soname 'ha_archive';
@@ -27,5 +28,4 @@ drop table t1;
--list_files $mysqld_datadir/test
uninstall soname 'ha_archive';
-set debug_dbug='-d,unstable_db_type';
-
+set debug_dbug=@save_dbug;
diff --git a/mysql-test/main/index_merge_innodb.result b/mysql-test/main/index_merge_innodb.result
index 549c920e857..6705ef29280 100644
--- a/mysql-test/main/index_merge_innodb.result
+++ b/mysql-test/main/index_merge_innodb.result
@@ -1,8 +1,11 @@
+connect disable_purge,localhost,root,,;
+# Disable the purge of InnoDB history, to make the test run faster.
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+connection default;
+SET STORAGE_ENGINE = InnoDB;
set @optimizer_switch_save= @@optimizer_switch;
set optimizer_switch='index_merge_sort_intersection=off';
#---------------- Index merge test 2 -------------------------------------------
-SET SESSION STORAGE_ENGINE = InnoDB;
-drop table if exists t1,t2;
create table t1
(
key1 int not null,
@@ -10,6 +13,7 @@ key2 int not null,
INDEX i1(key1),
INDEX i2(key2)
);
+INSERT INTO t1 SELECT seq,200-seq FROM seq_0_to_200;
explain select * from t1 where key1 < 5 or key2 > 197;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 8 Using sort_union(i1,i2); Using where
@@ -67,6 +71,8 @@ index (key2)
);
show warnings;
Level Code Message
+INSERT INTO t1 (key1, key2, filler)
+SELECT seq/4, seq/8, 'filler-data' FROM seq_30_to_0;
explain select pk from t1 where key1 = 1 and key2 = 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index_merge key1,key2 key1,key2 5,4 NULL 1 Using intersect(key1,key2); Using where; Using index
@@ -292,24 +298,7 @@ key1 int not null,
key2 int not null default 0,
key3 int not null default 0
);
-insert into t1(key1) values (1),(2),(3),(4),(5),(6),(7),(8);
-set @d=8;
-begin;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-commit;
+insert into t1(key1) select seq from seq_1_to_1024;
alter table t1 add index i2(key2);
alter table t1 add index i3(key3);
update t1 set key2=key1,key3=key1;
@@ -388,8 +377,6 @@ a b
1 b
DROP TABLE t1, t2;
#---------------- 2-sweeps read Index merge test 2 -------------------------------
-SET SESSION STORAGE_ENGINE = InnoDB;
-drop table if exists t1;
create table t1 (
pk int primary key,
key1 int,
@@ -399,6 +386,8 @@ filler2 char(200),
index(key1),
index(key2)
);
+insert into t1 select seq, seq, seq, 'filler-data', 'filler-data-2'
+from seq_1000_to_1;
select * from t1 where (key1 >= 2 and key1 <= 10) or (pk >= 4 and pk <=8 );
pk key1 key2 filler filler2
2 2 2 filler-data filler-data-2
@@ -526,8 +515,6 @@ pk key1 key2 filler filler2
54 54 54 filler-data filler-data-2
drop table t1;
#---------------- Clustered PK ROR-index_merge tests -----------------------------
-SET SESSION STORAGE_ENGINE = InnoDB;
-drop table if exists t1;
create table t1
(
pk1 int not null,
@@ -668,34 +655,27 @@ DROP TABLE t1,t2;
#
# BUG#56862/640419: Wrong result with sort_union index merge when one
# of the merged index scans is the primary key scan
-#
+#
+CREATE TABLE t0(a int, b int) ENGINE=MyISAM;
CREATE TABLE t1 (
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
a int,
b int,
INDEX idx(a))
ENGINE=INNODB;
-begin;
-INSERT INTO t1(a,b) VALUES
+INSERT INTO t0(a,b) VALUES
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
-INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
-INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
-INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t0(a,b) SELECT a+20, b+2000 FROM t0;
+INSERT INTO t0(a,b) SELECT a+40, b+4000 FROM t0;
+INSERT INTO t0(a,b) SELECT a+80, b+8000 FROM t0;
+begin;
+INSERT INTO t1(a,b) SELECT t0.a,t0.b FROM t0, seq_1_to_1024;
INSERT INTO t1 VALUES (1000000, 0, 0);
commit;
+DROP TABLE t0;
SET SESSION sort_buffer_size = 1024*36;
set @tmp_optimizer_switch=@@optimizer_switch;
set optimizer_switch='derived_merge=off,derived_with_keys=off';
@@ -759,8 +739,6 @@ DROP TABLE t1;
#
# BUG#1006164: Multi-table DELETE that uses innodb + index_merge/intersect may fail to delete rows
#
-create table t0(a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
pk int auto_increment,
zone_id int,
@@ -769,7 +747,7 @@ primary key(pk),
key (zone_id),
key (modified)
) engine=innodb;
-insert into t1 (zone_id, modified) select 0,0 from t0 A, t0 B, t0 C, t0 D;
+insert into t1 (zone_id, modified) select 0,0 from seq_1_to_10000;
update t1 set zone_id=487, modified=9 where pk=7259;
update t1 set zone_id=487, modified=9 where pk=7260;
update t1 set zone_id=830, modified=9 where pk=8434;
@@ -787,7 +765,7 @@ DELETE t1 FROM t1 WHERE t1.zone_id=830 AND modified=9;
commit;
select * from t1 where t1.zone_id=830 AND modified=9;
pk zone_id modified
-drop table t0, t1;
+drop table t1;
#
# MDEV-376: Wrong result (missing rows) with index_merge+index_merge_intersection, join
#
@@ -822,14 +800,11 @@ PRIMARY KEY (pk),
KEY key1 (key1),
KEY key2 (key2)
) ENGINE=InnoDB AUTO_INCREMENT=12860259 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-create table t2(a int);
-insert into t2 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-create table t3(a int);
-insert into t3 select A.a + B.a* 10 + C.a * 100 + D.a*1000 from t2 A, t2 B, t2 C, t2 D;
insert into t1 (key1, key2, col1,col2,col3,col4)
-select a,a, a,a,a,a from t3;
+select seq,seq,seq,seq,seq,seq from seq_1_to_10000;
SELECT sum(col1) FROM t1 FORCE INDEX (key1,key2) WHERE (key1 between 10 and 8191+10) or (key2= 5);
sum(col1)
33632261
-drop table t1,t2,t3;
+drop table t1;
set optimizer_switch=@tmp_optimizer_switch;
+disconnect disable_purge;
diff --git a/mysql-test/main/index_merge_innodb.test b/mysql-test/main/index_merge_innodb.test
index 11988d4529c..d3eb237ae38 100644
--- a/mysql-test/main/index_merge_innodb.test
+++ b/mysql-test/main/index_merge_innodb.test
@@ -14,7 +14,12 @@
--source include/not_staging.inc
--source include/have_innodb.inc
-let $engine_type= InnoDB;
+connect disable_purge,localhost,root,,;
+--echo # Disable the purge of InnoDB history, to make the test run faster.
+START TRANSACTION WITH CONSISTENT SNAPSHOT;
+connection default;
+
+SET STORAGE_ENGINE = InnoDB;
# InnoDB does not support Merge tables (affects include/index_merge1.inc)
let $merge_table_support= 0;
@@ -37,7 +42,9 @@ set optimizer_switch='index_merge_sort_intersection=off';
--echo #
--echo # BUG#56862/640419: Wrong result with sort_union index merge when one
--echo # of the merged index scans is the primary key scan
---echo #
+--echo #
+
+CREATE TABLE t0(a int, b int) ENGINE=MyISAM;
CREATE TABLE t1 (
pk int NOT NULL AUTO_INCREMENT PRIMARY KEY,
@@ -46,27 +53,19 @@ CREATE TABLE t1 (
INDEX idx(a))
ENGINE=INNODB;
-begin;
-INSERT INTO t1(a,b) VALUES
+INSERT INTO t0(a,b) VALUES
(11, 1100), (2, 200), (1, 100), (14, 1400), (5, 500),
(3, 300), (17, 1700), (4, 400), (12, 1200), (8, 800),
(6, 600), (18, 1800), (9, 900), (10, 1000), (7, 700),
(13, 1300), (15, 1500), (19, 1900), (16, 1600), (20, 2000);
-INSERT INTO t1(a,b) SELECT a+20, b+2000 FROM t1;
-INSERT INTO t1(a,b) SELECT a+40, b+4000 FROM t1;
-INSERT INTO t1(a,b) SELECT a+80, b+8000 FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
-INSERT INTO t1(a,b) SELECT a,b FROM t1;
+INSERT INTO t0(a,b) SELECT a+20, b+2000 FROM t0;
+INSERT INTO t0(a,b) SELECT a+40, b+4000 FROM t0;
+INSERT INTO t0(a,b) SELECT a+80, b+8000 FROM t0;
+begin;
+INSERT INTO t1(a,b) SELECT t0.a,t0.b FROM t0, seq_1_to_1024;
INSERT INTO t1 VALUES (1000000, 0, 0);
commit;
+DROP TABLE t0;
SET SESSION sort_buffer_size = 1024*36;
set @tmp_optimizer_switch=@@optimizer_switch;
@@ -131,9 +130,6 @@ DROP TABLE t1;
--echo # BUG#1006164: Multi-table DELETE that uses innodb + index_merge/intersect may fail to delete rows
--echo #
-create table t0(a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-
create table t1 (
pk int auto_increment,
zone_id int,
@@ -143,7 +139,7 @@ create table t1 (
key (modified)
) engine=innodb;
-insert into t1 (zone_id, modified) select 0,0 from t0 A, t0 B, t0 C, t0 D;
+insert into t1 (zone_id, modified) select 0,0 from seq_1_to_10000;
update t1 set zone_id=487, modified=9 where pk=7259;
update t1 set zone_id=487, modified=9 where pk=7260;
update t1 set zone_id=830, modified=9 where pk=8434;
@@ -157,7 +153,7 @@ DELETE t1 FROM t1 WHERE t1.zone_id=830 AND modified=9;
commit;
select * from t1 where t1.zone_id=830 AND modified=9;
-drop table t0, t1;
+drop table t1;
--echo #
--echo # MDEV-376: Wrong result (missing rows) with index_merge+index_merge_intersection, join
@@ -197,14 +193,10 @@ KEY key1 (key1),
KEY key2 (key2)
) ENGINE=InnoDB AUTO_INCREMENT=12860259 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;
-create table t2(a int);
-insert into t2 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
-
-create table t3(a int);
-insert into t3 select A.a + B.a* 10 + C.a * 100 + D.a*1000 from t2 A, t2 B, t2 C, t2 D;
-
insert into t1 (key1, key2, col1,col2,col3,col4)
-select a,a, a,a,a,a from t3;
+select seq,seq,seq,seq,seq,seq from seq_1_to_10000;
SELECT sum(col1) FROM t1 FORCE INDEX (key1,key2) WHERE (key1 between 10 and 8191+10) or (key2= 5);
-drop table t1,t2,t3;
+drop table t1;
set optimizer_switch=@tmp_optimizer_switch;
+
+disconnect disable_purge;
diff --git a/mysql-test/main/index_merge_myisam.result b/mysql-test/main/index_merge_myisam.result
index 218f1a9787e..c8520f18c43 100644
--- a/mysql-test/main/index_merge_myisam.result
+++ b/mysql-test/main/index_merge_myisam.result
@@ -1,13 +1,13 @@
+SET STORAGE_ENGINE = MyISAM;
set @optimizer_switch_save= @@optimizer_switch;
set optimizer_switch='index_merge_sort_intersection=off';
#---------------- Index merge test 1 -------------------------------------------
-SET SESSION STORAGE_ENGINE = MyISAM;
-drop table if exists t0, t1, t2, t3, t4;
create table t0
(
key1 int not null,
INDEX i1(key1)
);
+insert into t0(key1) select seq from seq_1_to_1024;
alter table t0 add key2 int not null, add index i2(key2);
alter table t0 add key3 int not null, add index i3(key3);
alter table t0 add key4 int not null, add index i4(key4);
@@ -228,7 +228,7 @@ index i2_2(key2, key2_1)
);
Warnings:
Note 1831 Duplicate index `i2_2`. This is deprecated and will be disallowed in a future release
-insert into t4 select key1,key1,key1 div 10, key1 % 10, key1 % 10, key1 from t0;
+insert into t4 select seq,seq,seq div 10, seq % 10, seq % 10, seq from seq_1_to_1024;
select * from t4 where key1a = 3 or key1b = 4;
key1a key1b key2 key2_1 key2_2 key3
3 3 0 3 3 3
@@ -414,14 +414,12 @@ explain select * from t1 force index(cola,colb) WHERE cola = 'foo' AND colb = 'b
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index_merge cola,colb cola,colb 3,3 NULL 32 Using intersect(cola,colb); Using where
drop table t1;
-create table t0 (a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (
a int, b int,
filler1 char(200), filler2 char(200),
key(a),key(b)
);
-insert into t1 select @v:= A.a, @v, 't1', 'filler2' from t0 A, t0 B, t0 C;
+insert into t1 select @v:= seq % 10, @v, 't1', 'filler2' from seq_1_to_1000;
create table t2 like t1;
create table t3 (
a int, b int,
@@ -434,8 +432,7 @@ id select_type table type possible_keys key key_len ref rows Extra
explain select * from t3 where a=1 and b=1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t3 index_merge a,b a,b 5,5 NULL # Using intersect(a,b); Using where
-drop table t3;
-drop table t0, t1, t2;
+drop table t1, t2, t3;
CREATE TABLE t1(a INT);
INSERT INTO t1 VALUES(1);
CREATE TABLE t2(a INT, b INT, dummy CHAR(16) DEFAULT '', KEY(a), KEY(b));
@@ -540,14 +537,12 @@ DROP TABLE t1;
#
# BUG#40974: Incorrect query results when using clause evaluated using range check
#
-create table t0 (a int);
-insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
create table t1 (a int);
insert into t1 values (1),(2);
create table t2(a int, b int);
insert into t2 values (1,1), (2, 1000);
create table t3 (a int, b int, filler char(100), key(a), key(b));
-insert into t3 select 1000, 1000,'filler' from t0 A, t0 B, t0 C;
+insert into t3 select 1000, 1000,'filler' from seq_1_to_1000;
insert into t3 values (1,1,'data');
insert into t3 values (1,1,'data');
The plan should be ALL/ALL/ALL(Range checked for each record (index map: 0x3)
@@ -565,19 +560,13 @@ where t2.a=t1.a and (t3.a=t2.b or t3.b=t2.b or t3.b=t2.b+1));
a
1
2
-drop table t0, t1, t2, t3;
+drop table t1, t2, t3;
#
# BUG#44810: index merge and order by with low sort_buffer_size
# crashes server!
#
CREATE TABLE t1(a VARCHAR(128),b VARCHAR(128),KEY(A),KEY(B));
-INSERT INTO t1 VALUES (REPEAT('a',128),REPEAT('b',128));
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
-INSERT INTO t1 SELECT * FROM t1;
+INSERT INTO t1 SELECT REPEAT('a',128),REPEAT('b',128) FROM seq_1_to_64;
SET SESSION sort_buffer_size=1024*8;
EXPLAIN
SELECT * FROM t1 FORCE INDEX(a,b) WHERE a LIKE 'a%' OR b LIKE 'b%'
@@ -590,8 +579,6 @@ SET SESSION sort_buffer_size=DEFAULT;
DROP TABLE t1;
End of 5.0 tests
#---------------- ROR-index_merge tests -----------------------
-SET SESSION STORAGE_ENGINE = MyISAM;
-drop table if exists t0,t1,t2;
create table t1
(
/* Field names reflect value(rowid) distribution, st=STairs, swt= SaWTooth */
@@ -840,8 +827,6 @@ SELECT * FROM t1;
c1 c2 c3
DROP TABLE t1,t2;
#---------------- Index merge test 2 -------------------------------------------
-SET SESSION STORAGE_ENGINE = MyISAM;
-drop table if exists t1,t2;
create table t1
(
key1 int not null,
@@ -849,6 +834,7 @@ key2 int not null,
INDEX i1(key1),
INDEX i2(key2)
);
+INSERT INTO t1 SELECT seq,200-seq FROM seq_0_to_200;
explain select * from t1 where key1 < 5 or key2 > 197;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 index_merge i1,i2 i1,i2 4,4 NULL 10 Using sort_union(i1,i2); Using where
@@ -906,6 +892,8 @@ index (key2)
);
show warnings;
Level Code Message
+INSERT INTO t1 (key1, key2, filler)
+SELECT seq/4, seq/8, 'filler-data' FROM seq_30_to_0;
explain select pk from t1 where key1 = 1 and key2 = 1;
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 ref key1,key2 key1 5 const 4 Using where
@@ -1131,24 +1119,7 @@ key1 int not null,
key2 int not null default 0,
key3 int not null default 0
);
-insert into t1(key1) values (1),(2),(3),(4),(5),(6),(7),(8);
-set @d=8;
-begin;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-insert into t1 (key1) select key1+@d from t1;
-set @d=@d*2;
-commit;
+insert into t1(key1) select seq from seq_1_to_1024;
alter table t1 add index i2(key2);
alter table t1 add index i3(key3);
update t1 set key2=key1,key3=key1;
@@ -1227,8 +1198,6 @@ a b
1 b
DROP TABLE t1, t2;
#---------------- 2-sweeps read Index merge test 2 -------------------------------
-SET SESSION STORAGE_ENGINE = MyISAM;
-drop table if exists t1;
create table t1 (
pk int primary key,
key1 int,
@@ -1238,6 +1207,8 @@ filler2 char(200),
index(key1),
index(key2)
);
+insert into t1 select seq, seq, seq, 'filler-data', 'filler-data-2'
+from seq_1000_to_1;
select * from t1 where (key1 >= 2 and key1 <= 10) or (pk >= 4 and pk <=8 );
pk key1 key2 filler filler2
10 10 10 filler-data filler-data-2
@@ -1365,8 +1336,6 @@ pk key1 key2 filler filler2
1 1 1 filler-data filler-data-2
drop table t1;
#---------------- Clustered PK ROR-index_merge tests -----------------------------
-SET SESSION STORAGE_ENGINE = MyISAM;
-drop table if exists t1;
create table t1
(
pk1 int not null,
@@ -1727,22 +1696,7 @@ create table t0
key1 int not null,
INDEX i1(key1)
);
-insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8);
-set @d=8;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
-insert into t0 select key1+ @d from t0;
-set @d=@d*2;
+insert into t0 select * from seq_1_to_1024;
alter table t0 add key2 int not null, add index i2(key2);
alter table t0 add key3 int not null, add index i3(key3);
alter table t0 add key8 int not null, add index i8(key8);
diff --git a/mysql-test/main/index_merge_myisam.test b/mysql-test/main/index_merge_myisam.test
index 75beb9bd883..2cee768706b 100644
--- a/mysql-test/main/index_merge_myisam.test
+++ b/mysql-test/main/index_merge_myisam.test
@@ -10,7 +10,7 @@
# include/index_merge*.inc files
#
-let $engine_type= MyISAM;
+SET STORAGE_ENGINE = MyISAM;
# MyISAM supports Merge tables
let $merge_table_support= 1;
@@ -33,7 +33,7 @@ insert into t1 select
A.a * B.a*10 + C.a*100,
A.a,
'filler'
-from t0 A, t0 B, t0 C;
+from t0 A, t0 B, t0 C;
--echo This should use union:
explain select * from t1 where a=1 or b=1;
@@ -253,15 +253,7 @@ create table t0
INDEX i1(key1)
);
-insert into t0 values (1),(2),(3),(4),(5),(6),(7),(8);
-let $1=7;
-set @d=8;
-while ($1)
-{
- eval insert into t0 select key1+ @d from t0;
- eval set @d=@d*2;
- dec $1;
-}
+insert into t0 select * from seq_1_to_1024;
alter table t0 add key2 int not null, add index i2(key2);
alter table t0 add key3 int not null, add index i3(key3);
alter table t0 add key8 int not null, add index i8(key8);
diff --git a/mysql-test/main/log_slow_debug.result b/mysql-test/main/log_slow_debug.result
index 8d35cf9f36e..71a76342aba 100644
--- a/mysql-test/main/log_slow_debug.result
+++ b/mysql-test/main/log_slow_debug.result
@@ -6,6 +6,7 @@ SET @@GLOBAL.log_output='TABLE';
FLUSH SLOW LOGS;
SET @@GLOBAL.slow_query_log=ON;
SET @@GLOBAL.log_slow_admin_statements=ON;
+SET @save_dbug = @@debug_dbug;
SET SESSION debug_dbug="+d,simulate_slow_query";
CREATE PROCEDURE show_slow_log()
BEGIN
@@ -217,7 +218,7 @@ sql_text
#
# Clean up
#
-SET SESSION debug_dbug="-d,simulate_slow_query";
+SET SESSION debug_dbug=@save_dbug;
TRUNCATE mysql.slow_log;
SET @@global.slow_query_log= @org_slow_query_log;
SET @@global.log_output= @org_log_output;
diff --git a/mysql-test/main/log_slow_debug.test b/mysql-test/main/log_slow_debug.test
index d92931c52f2..6b7cdd62f8a 100644
--- a/mysql-test/main/log_slow_debug.test
+++ b/mysql-test/main/log_slow_debug.test
@@ -9,6 +9,7 @@ SET @@GLOBAL.log_output='TABLE';
FLUSH SLOW LOGS;
SET @@GLOBAL.slow_query_log=ON;
SET @@GLOBAL.log_slow_admin_statements=ON;
+SET @save_dbug = @@debug_dbug;
SET SESSION debug_dbug="+d,simulate_slow_query";
DELIMITER $$;
@@ -86,7 +87,7 @@ CALL show_slow_log();
--echo # Clean up
--echo #
-SET SESSION debug_dbug="-d,simulate_slow_query";
+SET SESSION debug_dbug=@save_dbug;
TRUNCATE mysql.slow_log;
SET @@global.slow_query_log= @org_slow_query_log;
SET @@global.log_output= @org_log_output;
diff --git a/mysql-test/main/partition_debug_sync.result b/mysql-test/main/partition_debug_sync.result
index b79385686b7..7006491fcaa 100644
--- a/mysql-test/main/partition_debug_sync.result
+++ b/mysql-test/main/partition_debug_sync.result
@@ -1,4 +1,3 @@
-DROP TABLE IF EXISTS t1, t2;
SET DEBUG_SYNC= 'RESET';
#
# Bug#42438: Crash ha_partition::change_table_ptr
diff --git a/mysql-test/main/partition_debug_sync.test b/mysql-test/main/partition_debug_sync.test
index f085ea3fb83..09ebba0b0e2 100644
--- a/mysql-test/main/partition_debug_sync.test
+++ b/mysql-test/main/partition_debug_sync.test
@@ -8,10 +8,7 @@
--source include/have_debug.inc
--source include/have_innodb.inc
---disable_warnings
-DROP TABLE IF EXISTS t1, t2;
SET DEBUG_SYNC= 'RESET';
---enable_warnings
--echo #
--echo # Bug#42438: Crash ha_partition::change_table_ptr
diff --git a/mysql-test/main/sp-code.result b/mysql-test/main/sp-code.result
index 0ff30ba7764..46324c534e8 100644
--- a/mysql-test/main/sp-code.result
+++ b/mysql-test/main/sp-code.result
@@ -919,6 +919,7 @@ END;
CLOSE c;
SELECT a INTO @foo FROM t1 LIMIT 1; # Clear warning stack
END|
+SET @save_dbug = @@debug_dbug;
SET SESSION debug_dbug="+d,bug23032_emit_warning";
CALL p1();
Warning found!
@@ -938,7 +939,7 @@ End of Result Set found!
Level Code Message
Warning 1105 Unknown error
Error 1329 No data - zero rows fetched, selected, or processed
-SET SESSION debug_dbug="-d,bug23032_emit_warning";
+SET SESSION debug_dbug=@save_dbug;
DROP PROCEDURE p1;
DROP TABLE t1;
#
diff --git a/mysql-test/main/sp-code.test b/mysql-test/main/sp-code.test
index f8c1b4f0a92..e03ce5048fb 100644
--- a/mysql-test/main/sp-code.test
+++ b/mysql-test/main/sp-code.test
@@ -696,9 +696,10 @@ END|
delimiter ;|
+SET @save_dbug = @@debug_dbug;
SET SESSION debug_dbug="+d,bug23032_emit_warning";
CALL p1();
-SET SESSION debug_dbug="-d,bug23032_emit_warning";
+SET SESSION debug_dbug=@save_dbug;
DROP PROCEDURE p1;
DROP TABLE t1;
diff --git a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result
index 1bbc577ed93..d99565b2f4c 100644
--- a/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result
+++ b/mysql-test/suite/gcol/r/innodb_virtual_debug_purge.result
@@ -233,3 +233,48 @@ set global debug_dbug= @saved_dbug;
drop table t1;
set debug_sync=reset;
SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency;
+#
+# MDEV-18546 ASAN heap-use-after-free
+# in innobase_get_computed_value / row_purge
+#
+CREATE TABLE t1 (
+pk INT AUTO_INCREMENT,
+b BIT(15),
+v BIT(15) AS (b) VIRTUAL,
+PRIMARY KEY(pk),
+UNIQUE(v)
+) ENGINE=InnoDB;
+INSERT IGNORE INTO t1 (b) VALUES
+(NULL),(b'011'),(b'000110100'),
+(b'01101101010'),(b'01111001001011'),(NULL);
+SET GLOBAL innodb_debug_sync = "ib_clust_v_col_before_row_allocated "
+ "SIGNAL before_row_allocated "
+ "WAIT_FOR flush_unlock";
+SET GLOBAL innodb_debug_sync = "ib_open_after_dict_open "
+ "SIGNAL purge_open "
+ "WAIT_FOR select_open";
+set @saved_dbug= @@global.debug_dbug;
+set global debug_dbug= "+d,ib_purge_virtual_index_callback";
+connect purge_waiter,localhost,root;
+SET debug_sync= "now WAIT_FOR before_row_allocated";
+connection default;
+REPLACE INTO t1 (pk, b) SELECT pk, b FROM t1;
+connection purge_waiter;
+connection default;
+disconnect purge_waiter;
+FLUSH TABLES;
+SET GLOBAL innodb_debug_sync = reset;
+SET debug_sync= "now SIGNAL flush_unlock WAIT_FOR purge_open";
+SET GLOBAL innodb_debug_sync = reset;
+SET debug_sync= "ib_open_after_dict_open SIGNAL select_open";
+SELECT * FROM t1;
+pk b v
+1 NULL NULL
+2
+3
+4 j j
+5 K K
+6 NULL NULL
+DROP TABLE t1;
+SET debug_sync= reset;
+set global debug_dbug= @saved_dbug;
diff --git a/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test b/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test
index 04ab8a88488..276407007da 100644
--- a/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test
+++ b/mysql-test/suite/gcol/t/innodb_virtual_debug_purge.test
@@ -310,3 +310,67 @@ drop table t1;
--source include/wait_until_count_sessions.inc
set debug_sync=reset;
SET GLOBAL innodb_purge_rseg_truncate_frequency = @saved_frequency;
+
+--echo #
+--echo # MDEV-18546 ASAN heap-use-after-free
+--echo # in innobase_get_computed_value / row_purge
+--echo #
+
+CREATE TABLE t1 (
+ pk INT AUTO_INCREMENT,
+ b BIT(15),
+ v BIT(15) AS (b) VIRTUAL,
+ PRIMARY KEY(pk),
+ UNIQUE(v)
+) ENGINE=InnoDB;
+INSERT IGNORE INTO t1 (b) VALUES
+ (NULL),(b'011'),(b'000110100'),
+ (b'01101101010'),(b'01111001001011'),(NULL);
+
+SET GLOBAL innodb_debug_sync = "ib_clust_v_col_before_row_allocated "
+ "SIGNAL before_row_allocated "
+ "WAIT_FOR flush_unlock";
+SET GLOBAL innodb_debug_sync = "ib_open_after_dict_open "
+ "SIGNAL purge_open "
+ "WAIT_FOR select_open";
+
+# In 10.2 trx_undo_roll_ptr_is_insert(t_roll_ptr) condition never pass in purge,
+# so this condition is forced to pass in row_vers_old_has_index_entry
+set @saved_dbug= @@global.debug_dbug;
+set global debug_dbug= "+d,ib_purge_virtual_index_callback";
+
+# The purge starts from REPLACE command. To avoid possible race, separate
+# connection is used.
+--connect(purge_waiter,localhost,root)
+--send
+SET debug_sync= "now WAIT_FOR before_row_allocated";
+
+--connection default
+REPLACE INTO t1 (pk, b) SELECT pk, b FROM t1;
+
+--connection purge_waiter
+# Now we will definitely catch ib_clust_v_col_before_row_allocated
+--reap
+--connection default
+--disconnect purge_waiter
+
+# purge hangs on the sync point. table is purged, ref_count is set to 0
+FLUSH TABLES;
+
+# Avoid hang on repeating purge.
+# Reset Will be applied after first record is purged
+SET GLOBAL innodb_debug_sync = reset;
+
+SET debug_sync= "now SIGNAL flush_unlock WAIT_FOR purge_open";
+
+# Avoid hang on repeating purge
+SET GLOBAL innodb_debug_sync = reset;
+
+# select unblocks purge thread
+SET debug_sync= "ib_open_after_dict_open SIGNAL select_open";
+SELECT * FROM t1;
+
+# Cleanup
+DROP TABLE t1;
+SET debug_sync= reset;
+set global debug_dbug= @saved_dbug; \ No newline at end of file
diff --git a/mysql-test/suite/parts/inc/partition_crash_add.inc b/mysql-test/suite/parts/inc/partition_crash_add.inc
index fcd058562c0..43b0c5c88bd 100644
--- a/mysql-test/suite/parts/inc/partition_crash_add.inc
+++ b/mysql-test/suite/parts/inc/partition_crash_add.inc
@@ -1,33 +1,34 @@
# To be used with partition mgm commands like
# ALTER TABLE t1 ADD PARTITION (LIST/RANGE PARTITIONING).
--echo # Crash testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_1";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_2";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_3";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_4";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_5";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_6";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_7";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_8";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_9";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_10";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_crash_change.inc b/mysql-test/suite/parts/inc/partition_crash_change.inc
index ba9dd9cbdc8..501bc78a22d 100644
--- a/mysql-test/suite/parts/inc/partition_crash_change.inc
+++ b/mysql-test/suite/parts/inc/partition_crash_change.inc
@@ -2,39 +2,40 @@
# ALTER TABLE t1 COALESCE/REBUILD/REORGANIZE PARTITION.
--echo # Test change partition (REORGANIZE/REBUILD/COALESCE
--echo # or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_1";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_2";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_3";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_4";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_5";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_6";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_7";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_8";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_9";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_10";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_11";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_12";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_crash_drop.inc b/mysql-test/suite/parts/inc/partition_crash_drop.inc
index 91787cdecdc..80730bb9008 100644
--- a/mysql-test/suite/parts/inc/partition_crash_drop.inc
+++ b/mysql-test/suite/parts/inc/partition_crash_drop.inc
@@ -1,30 +1,31 @@
# To be used with partition mgm commands like
# ALTER TABLE t1 DROP PARTITION.
--echo # Test DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_1";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_2";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_3";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_4";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_5";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_6";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_7";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_8";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_9";
--source suite/parts/inc/partition_crash.inc
-SET SESSION debug_dbug="-d,crash_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_crash_exchange.inc b/mysql-test/suite/parts/inc/partition_crash_exchange.inc
index 399cff8f376..32b888707eb 100644
--- a/mysql-test/suite/parts/inc/partition_crash_exchange.inc
+++ b/mysql-test/suite/parts/inc/partition_crash_exchange.inc
@@ -1,29 +1,30 @@
# To be used with WL#4445: EXCHANGE PARTITION WITH TABLE.
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_1";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_2";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_3";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_4";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_5";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_6";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_7";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_8";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_9";
--source suite/parts/inc/partition_crash_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_abort_9";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_fail_add.inc b/mysql-test/suite/parts/inc/partition_fail_add.inc
index 72978458e0b..a7b8dd8aeb4 100644
--- a/mysql-test/suite/parts/inc/partition_fail_add.inc
+++ b/mysql-test/suite/parts/inc/partition_fail_add.inc
@@ -1,33 +1,34 @@
# To be used with partition mgm commands like
# ALTER TABLE t1 ADD PARTITION (LIST/RANGE PARTITIONING).
--echo # Error recovery testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_1";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_2";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_3";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_4";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_5";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_6";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_7";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_8";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_9";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_10";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_fail_change.inc b/mysql-test/suite/parts/inc/partition_fail_change.inc
index 0c576d990fe..c10d5fecc2e 100644
--- a/mysql-test/suite/parts/inc/partition_fail_change.inc
+++ b/mysql-test/suite/parts/inc/partition_fail_change.inc
@@ -2,39 +2,40 @@
# ALTER TABLE t1 COALESCE/REBUILD/REORGANIZE PARTITION.
--echo # Error recovery change partition (REORGANIZE/REBUILD/COALESCE
--echo # or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_1";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_2";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_3";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_4";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_5";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_6";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_7";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_8";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_9";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_10";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_11";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_12";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_fail_drop.inc b/mysql-test/suite/parts/inc/partition_fail_drop.inc
index ca9bcf7d7a3..df1d28b0bf9 100644
--- a/mysql-test/suite/parts/inc/partition_fail_drop.inc
+++ b/mysql-test/suite/parts/inc/partition_fail_drop.inc
@@ -1,30 +1,31 @@
# To be used with partition mgm commands like
# ALTER TABLE t1 DROP PARTITION.
--echo # Error recovery DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_1";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_2";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_3";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_4";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_5";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_6";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_7";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_8";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_9";
--source suite/parts/inc/partition_fail.inc
-SET SESSION debug_dbug="-d,fail_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/inc/partition_fail_exchange.inc b/mysql-test/suite/parts/inc/partition_fail_exchange.inc
index cc8d76bedfe..33d7bbd1d75 100644
--- a/mysql-test/suite/parts/inc/partition_fail_exchange.inc
+++ b/mysql-test/suite/parts/inc/partition_fail_exchange.inc
@@ -1,27 +1,28 @@
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_1";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_2";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_3";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_4";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_5";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_6";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_7";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_8";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_9";
--source suite/parts/inc/partition_fail_t2.inc
-SET SESSION debug_dbug="-d,exchange_partition_fail_9";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/r/partition_debug.result b/mysql-test/suite/parts/r/partition_debug.result
index 7c6a0f33a9f..7460fe8dd74 100644
--- a/mysql-test/suite/parts/r/partition_debug.result
+++ b/mysql-test/suite/parts/r/partition_debug.result
@@ -1,4 +1,3 @@
-DROP TABLE IF EXISTS t1;
#
# Bug#13737949: CRASH IN HA_PARTITION::INDEX_INIT
# Bug#18694052: SERVER CRASH IN HA_PARTITION::INIT_RECORD_PRIORITY_QUEUE
@@ -7,10 +6,11 @@ CREATE TABLE t1 (a INT, b VARCHAR(64), KEY(b,a))
PARTITION BY HASH (a) PARTITIONS 3;
INSERT INTO t1 VALUES (1, "1"), (2, "2"), (3, "3"), (4, "Four"), (5, "Five"),
(6, "Six"), (7, "Seven"), (8, "Eight"), (9, "Nine");
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,ha_partition_fail_index_init";
SELECT * FROM t1 WHERE b = "Seven";
ERROR HY000: Table has no partition for value 0
-SET SESSION debug_dbug="-d,ha_partition_fail_index_init";
+SET SESSION debug_dbug=@save_dbug;
SELECT * FROM t1 WHERE b = "Seven";
a b
7 Seven
@@ -20,6 +20,7 @@ DROP TABLE t1;
# Verify ddl_log in case of crashing.
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
call mtr.add_suppression('InnoDB: The log sequence numbers [0-9]+ and [0-9]+ in ibdata files do not match the log sequence number [0-9]+ in the ib_logfiles!');
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_1";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -134,7 +135,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_2";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -249,7 +250,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_3";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -364,7 +365,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_4";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -479,7 +480,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_5";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -594,7 +595,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_6";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -709,7 +710,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_7";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -824,7 +825,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_8";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -939,7 +940,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_9";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1054,7 +1055,8 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_9";
+SET SESSION debug_dbug=@save_dbug;
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_1";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1158,7 +1160,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_2";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1262,7 +1264,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_3";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1366,7 +1368,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_4";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1470,7 +1472,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_5";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1574,7 +1576,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_6";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1678,7 +1680,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_7";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1782,7 +1784,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_8";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1886,7 +1888,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_9";
CREATE TABLE t2 (a INT, b VARCHAR(64));
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -1990,4 +1992,4 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_9";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/r/partition_debug_innodb.result b/mysql-test/suite/parts/r/partition_debug_innodb.result
index dfb576ae52d..8bae87ee877 100644
--- a/mysql-test/suite/parts/r/partition_debug_innodb.result
+++ b/mysql-test/suite/parts/r/partition_debug_innodb.result
@@ -1,4 +1,3 @@
-DROP TABLE IF EXISTS t1;
call mtr.add_suppression("InnoDB: Warning: allocated tablespace .*, old maximum was");
call mtr.add_suppression("InnoDB: Error: table .* does not exist in the InnoDB internal");
call mtr.add_suppression("InnoDB: Warning: MySQL is trying to drop table ");
@@ -12,6 +11,7 @@ call mtr.add_suppression("InnoDB: Warning: MySQL is trying to drop table ");
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
flush tables;
# Crash testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -79,7 +79,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -149,7 +149,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -219,7 +219,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -289,7 +289,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -360,7 +360,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -431,7 +431,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -502,7 +502,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -575,7 +575,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -646,7 +646,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -717,8 +717,9 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -843,7 +844,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -968,7 +969,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1093,7 +1094,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1218,7 +1219,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1343,7 +1344,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1468,7 +1469,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1593,7 +1594,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1722,7 +1723,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1851,7 +1852,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -1980,8 +1981,9 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
# Test DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2048,7 +2050,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2117,7 +2119,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2186,7 +2188,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2249,7 +2251,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2312,7 +2314,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2375,7 +2377,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2436,7 +2438,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2496,7 +2498,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2556,8 +2558,9 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2680,7 +2683,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2803,7 +2806,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -2926,7 +2929,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3037,7 +3040,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3148,7 +3151,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3259,7 +3262,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3370,7 +3373,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3481,7 +3484,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3592,9 +3595,10 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
# Test change partition (REORGANIZE/REBUILD/COALESCE
# or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3663,7 +3667,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3734,7 +3738,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3805,7 +3809,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3878,7 +3882,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -3951,7 +3955,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4024,7 +4028,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4099,7 +4103,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4174,7 +4178,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4247,7 +4251,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4320,7 +4324,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_11";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4392,7 +4396,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_12";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4464,9 +4468,10 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery change partition (REORGANIZE/REBUILD/COALESCE
# or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4593,7 +4598,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4720,7 +4725,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4847,7 +4852,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -4974,7 +4979,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5101,7 +5106,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5228,7 +5233,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5359,7 +5364,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5490,7 +5495,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5621,7 +5626,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5752,7 +5757,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_11";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -5883,7 +5888,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_12";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'InnoDB'
@@ -6014,13 +6019,14 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
#
# WL#4445: EXCHANGE PARTITION WITH TABLE
# Verify ddl_log and InnoDB in case of crashing.
call mtr.add_suppression("InnoDB: Warning: allocated tablespace .*, old maximum was ");
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
call mtr.add_suppression("table .* does not exist in the InnoDB internal");
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_1";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6128,7 +6134,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_2";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6236,7 +6242,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_3";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6344,7 +6350,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_4";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6452,7 +6458,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_5";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6560,7 +6566,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_6";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6668,7 +6674,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_7";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6776,7 +6782,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_8";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6884,7 +6890,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_9";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6992,7 +6998,8 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_9";
+SET SESSION debug_dbug=@save_dbug;
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_1";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7092,7 +7099,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_2";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7192,7 +7199,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_3";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7292,7 +7299,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_4";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7392,7 +7399,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_5";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7492,7 +7499,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_6";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7592,7 +7599,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_7";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7692,7 +7699,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_8";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7792,7 +7799,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_9";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = InnoDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7892,4 +7899,4 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_9";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/r/partition_debug_myisam.result b/mysql-test/suite/parts/r/partition_debug_myisam.result
index fc2dcf7202a..0b1004d121d 100644
--- a/mysql-test/suite/parts/r/partition_debug_myisam.result
+++ b/mysql-test/suite/parts/r/partition_debug_myisam.result
@@ -1,4 +1,3 @@
-DROP TABLE IF EXISTS t1;
# Test crash and failure recovery in fast_alter_partition_table.
#
# Bug#53676: Unexpected errors and possible table corruption on
@@ -9,6 +8,7 @@ DROP TABLE IF EXISTS t1;
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
flush tables;
# Crash testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -82,7 +82,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -158,7 +158,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -234,7 +234,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -310,7 +310,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -388,7 +388,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -466,7 +466,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -544,7 +544,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -625,7 +625,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -704,7 +704,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -783,8 +783,9 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -917,7 +918,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1050,7 +1051,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1183,7 +1184,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1316,7 +1317,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1449,7 +1450,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1582,7 +1583,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1715,7 +1716,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1854,7 +1855,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -1993,7 +1994,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2132,8 +2133,9 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
# Test DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2206,7 +2208,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2281,7 +2283,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2356,7 +2358,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2424,7 +2426,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2492,7 +2494,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2560,7 +2562,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2626,7 +2628,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2690,7 +2692,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2754,8 +2756,9 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -2886,7 +2889,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3017,7 +3020,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3148,7 +3151,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3265,7 +3268,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3382,7 +3385,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3499,7 +3502,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3616,7 +3619,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3733,7 +3736,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3850,9 +3853,10 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
# Test change partition (REORGANIZE/REBUILD/COALESCE
# or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -3927,7 +3931,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4004,7 +4008,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4081,7 +4085,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4162,7 +4166,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4243,7 +4247,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4324,7 +4328,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4408,7 +4412,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4492,7 +4496,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4574,7 +4578,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4656,7 +4660,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_11";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4736,7 +4740,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_12";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4816,9 +4820,10 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery change partition (REORGANIZE/REBUILD/COALESCE
# or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -4953,7 +4958,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5088,7 +5093,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5223,7 +5228,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5358,7 +5363,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5493,7 +5498,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5628,7 +5633,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5769,7 +5774,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -5910,7 +5915,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -6051,7 +6056,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -6192,7 +6197,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_11";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -6333,7 +6338,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_12";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'MyISAM'
@@ -6474,4 +6479,4 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
diff --git a/mysql-test/suite/parts/t/partition_debug.test b/mysql-test/suite/parts/t/partition_debug.test
index 11b66e4afd8..ef12ee99948 100644
--- a/mysql-test/suite/parts/t/partition_debug.test
+++ b/mysql-test/suite/parts/t/partition_debug.test
@@ -8,10 +8,6 @@
# Crash tests don't work with embedded
--source include/not_embedded.inc
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
# Partitioning test that require debug features
--echo #
@@ -22,10 +18,11 @@ CREATE TABLE t1 (a INT, b VARCHAR(64), KEY(b,a))
PARTITION BY HASH (a) PARTITIONS 3;
INSERT INTO t1 VALUES (1, "1"), (2, "2"), (3, "3"), (4, "Four"), (5, "Five"),
(6, "Six"), (7, "Seven"), (8, "Eight"), (9, "Nine");
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,ha_partition_fail_index_init";
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
SELECT * FROM t1 WHERE b = "Seven";
-SET SESSION debug_dbug="-d,ha_partition_fail_index_init";
+SET SESSION debug_dbug=@save_dbug;
SELECT * FROM t1 WHERE b = "Seven";
DROP TABLE t1;
diff --git a/mysql-test/suite/parts/t/partition_debug_innodb.test b/mysql-test/suite/parts/t/partition_debug_innodb.test
index d4cac35c0b6..c3fa85ba5ba 100644
--- a/mysql-test/suite/parts/t/partition_debug_innodb.test
+++ b/mysql-test/suite/parts/t/partition_debug_innodb.test
@@ -9,10 +9,6 @@
# Crash tests don't work with embedded
--source include/not_embedded.inc
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
--let $DATADIR= `SELECT @@datadir;`
# Waiting for wl#6723
@@ -34,6 +30,7 @@ INSERT INTO t1 VALUES (6, 'X 6 row'), (7, 'Seventh row'), (8, 'Last row');
ALTER TABLE t1 ADD INDEX new_b_index (b);
ALTER TABLE t1 DROP INDEX new_b_index;
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug = "+d,ha_partition_fail_final_add_index";
--error ER_NO_PARTITION_FOR_GIVEN_VALUE
@@ -49,7 +46,7 @@ SHOW CREATE TABLE t1;
--sorted_result
SELECT * FROM t1;
-SET SESSION debug_dbug = "-d,ha_partition_fail_final_add_index";
+SET SESSION debug_dbug = @save_dbug;
SHOW CREATE TABLE t1;
DROP TABLE t1;
}
diff --git a/mysql-test/suite/parts/t/partition_debug_myisam.test b/mysql-test/suite/parts/t/partition_debug_myisam.test
index 98560827ca9..7626be602db 100644
--- a/mysql-test/suite/parts/t/partition_debug_myisam.test
+++ b/mysql-test/suite/parts/t/partition_debug_myisam.test
@@ -6,10 +6,6 @@
--source include/not_valgrind.inc
--source include/not_embedded.inc
---disable_warnings
-DROP TABLE IF EXISTS t1;
---enable_warnings
-
--let $DATADIR= `SELECT @@datadir;`
let $engine= 'MyISAM';
diff --git a/mysql-test/suite/sys_vars/r/sysvars_innodb.result b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
index 4a5628c9244..58e8cd53e77 100644
--- a/mysql-test/suite/sys_vars/r/sysvars_innodb.result
+++ b/mysql-test/suite/sys_vars/r/sysvars_innodb.result
@@ -525,6 +525,18 @@ NUMERIC_BLOCK_SIZE NULL
ENUM_VALUE_LIST OFF,ON
READ_ONLY NO
COMMAND_LINE_ARGUMENT REQUIRED
+VARIABLE_NAME INNODB_DEBUG_SYNC
+SESSION_VALUE NULL
+DEFAULT_VALUE
+VARIABLE_SCOPE GLOBAL
+VARIABLE_TYPE VARCHAR
+VARIABLE_COMMENT debug_sync for innodb purge threads. Use it to set up sync points for all purge threads at once. The commands will be applied sequentially at the beginning of purging the next undo record.
+NUMERIC_MIN_VALUE NULL
+NUMERIC_MAX_VALUE NULL
+NUMERIC_BLOCK_SIZE NULL
+ENUM_VALUE_LIST NULL
+READ_ONLY NO
+COMMAND_LINE_ARGUMENT NONE
VARIABLE_NAME INNODB_DEFAULT_ENCRYPTION_KEY_ID
SESSION_VALUE 1
DEFAULT_VALUE 1
diff --git a/storage/innobase/buf/buf0dblwr.cc b/storage/innobase/buf/buf0dblwr.cc
index 6e5dee67714..3f998165ccc 100644
--- a/storage/innobase/buf/buf0dblwr.cc
+++ b/storage/innobase/buf/buf0dblwr.cc
@@ -1,7 +1,7 @@
/*****************************************************************************
Copyright (c) 1995, 2017, Oracle and/or its affiliates. All Rights Reserved.
-Copyright (c) 2013, 2018, MariaDB Corporation.
+Copyright (c) 2013, 2019, MariaDB Corporation.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
@@ -264,6 +264,13 @@ too_small:
ut_ad(rw_lock_get_x_lock_count(&new_block->lock) == 1);
page_no = new_block->page.id.page_no();
+ /* We only do this in the debug build, to ensure that
+ both the check in buf_flush_init_for_writing() and
+ recv_parse_or_apply_log_rec_body() will see a valid
+ page type. The flushes of new_block are actually
+ unnecessary here. */
+ ut_d(mlog_write_ulint(FIL_PAGE_TYPE + new_block->frame,
+ FIL_PAGE_TYPE_SYS, MLOG_2BYTES, &mtr));
if (i == FSP_EXTENT_SIZE / 2) {
ut_a(page_no == FSP_EXTENT_SIZE);
@@ -326,6 +333,7 @@ too_small:
/* Flush the modified pages to disk and make a checkpoint */
log_make_checkpoint();
+ buf_dblwr_being_created = FALSE;
/* Remove doublewrite pages from LRU */
buf_pool_invalidate();
diff --git a/storage/innobase/buf/buf0flu.cc b/storage/innobase/buf/buf0flu.cc
index fffeafbdf8c..ae56fdae9ab 100644
--- a/storage/innobase/buf/buf0flu.cc
+++ b/storage/innobase/buf/buf0flu.cc
@@ -855,7 +855,9 @@ buf_flush_init_for_writing(
ut_ad(block == NULL || block->frame == page);
ut_ad(block == NULL || page_zip_ == NULL
|| &block->page.zip == page_zip_);
+ ut_ad(!block || newest_lsn);
ut_ad(page);
+ ut_ad(!newest_lsn || fil_page_get_type(page));
if (page_zip_) {
page_zip_des_t* page_zip;
diff --git a/storage/innobase/handler/ha_innodb.cc b/storage/innobase/handler/ha_innodb.cc
index d254da182ff..6dc01f9297b 100644
--- a/storage/innobase/handler/ha_innodb.cc
+++ b/storage/innobase/handler/ha_innodb.cc
@@ -18573,6 +18573,33 @@ innodb_log_checksums_update(THD* thd, st_mysql_sys_var*, void* var_ptr,
thd, *static_cast<const my_bool*>(save));
}
+#ifdef UNIV_DEBUG
+static
+void
+innobase_debug_sync_callback(srv_slot_t *slot, const void *value)
+{
+ const char *value_str = *static_cast<const char* const*>(value);
+ size_t len = strlen(value_str) + 1;
+
+
+ // One allocatoin for list node object and value.
+ void *buf = ut_malloc_nokey(sizeof(srv_slot_t::debug_sync_t) + len);
+ srv_slot_t::debug_sync_t *sync = new(buf) srv_slot_t::debug_sync_t();
+ strcpy(reinterpret_cast<char*>(&sync[1]), value_str);
+
+ rw_lock_x_lock(&slot->debug_sync_lock);
+ UT_LIST_ADD_LAST(slot->debug_sync, sync);
+ rw_lock_x_unlock(&slot->debug_sync_lock);
+}
+static
+void
+innobase_debug_sync_set(THD *thd, st_mysql_sys_var*, void *, const void *value)
+{
+ srv_for_each_thread(SRV_WORKER, innobase_debug_sync_callback, value);
+ srv_for_each_thread(SRV_PURGE, innobase_debug_sync_callback, value);
+}
+#endif
+
static SHOW_VAR innodb_status_variables_export[]= {
{"Innodb", (char*) &show_innodb_vars, SHOW_FUNC},
{NullS, NullS, SHOW_LONG}
@@ -19025,7 +19052,8 @@ static MYSQL_SYSVAR_ULONG(purge_threads, srv_n_purge_threads,
NULL, NULL,
4, /* Default setting */
1, /* Minimum value */
- 32, 0); /* Maximum value */
+ srv_max_purge_threads,/* Maximum value */
+ 0);
static MYSQL_SYSVAR_ULONG(sync_array_size, srv_sync_array_size,
PLUGIN_VAR_OPCMDARG | PLUGIN_VAR_READONLY,
@@ -20092,6 +20120,16 @@ static MYSQL_SYSVAR_BOOL(debug_force_scrubbing,
0,
"Perform extra scrubbing to increase test exposure",
NULL, NULL, FALSE);
+
+char *innobase_debug_sync;
+static MYSQL_SYSVAR_STR(debug_sync, innobase_debug_sync,
+ PLUGIN_VAR_NOCMDARG,
+ "debug_sync for innodb purge threads. "
+ "Use it to set up sync points for all purge threads "
+ "at once. The commands will be applied sequentially at "
+ "the beginning of purging the next undo record.",
+ NULL,
+ innobase_debug_sync_set, NULL);
#endif /* UNIV_DEBUG */
static MYSQL_SYSVAR_BOOL(encrypt_temporary_tables, innodb_encrypt_temporary_tables,
@@ -20303,6 +20341,7 @@ static struct st_mysql_sys_var* innobase_system_variables[]= {
MYSQL_SYSVAR(background_scrub_data_check_interval),
#ifdef UNIV_DEBUG
MYSQL_SYSVAR(debug_force_scrubbing),
+ MYSQL_SYSVAR(debug_sync),
#endif
MYSQL_SYSVAR(buf_dump_status_frequency),
MYSQL_SYSVAR(background_thread),
diff --git a/storage/innobase/ibuf/ibuf0ibuf.cc b/storage/innobase/ibuf/ibuf0ibuf.cc
index 4dbd9f8ff1a..62aabe895b7 100644
--- a/storage/innobase/ibuf/ibuf0ibuf.cc
+++ b/storage/innobase/ibuf/ibuf0ibuf.cc
@@ -1987,14 +1987,14 @@ ibuf_add_free_page(void)
buf_block_dbg_add_level(block, SYNC_IBUF_TREE_NODE_NEW);
page = buf_block_get_frame(block);
+ mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_IBUF_FREE_LIST,
+ MLOG_2BYTES, &mtr);
+
/* Add the page to the free list and update the ibuf size data */
flst_add_last(root + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST,
page + PAGE_HEADER + PAGE_BTR_IBUF_FREE_LIST_NODE, &mtr);
- mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_IBUF_FREE_LIST,
- MLOG_2BYTES, &mtr);
-
ibuf->seg_size++;
ibuf->free_list_len++;
diff --git a/storage/innobase/include/que0que.h b/storage/innobase/include/que0que.h
index b7d2aae2c1b..66dc00f5d10 100644
--- a/storage/innobase/include/que0que.h
+++ b/storage/innobase/include/que0que.h
@@ -378,6 +378,9 @@ struct que_thr_t{
related delete/updates */
row_prebuilt_t* prebuilt; /*!< prebuilt structure processed by
the query thread */
+
+ /** a slot of srv_sys.sys_threads, for DEBUG_SYNC in purge thread */
+ ut_d(srv_slot_t* thread_slot;)
};
#define QUE_THR_MAGIC_N 8476583
diff --git a/storage/innobase/include/srv0srv.h b/storage/innobase/include/srv0srv.h
index e35aa90331b..4644c1b8a0b 100644
--- a/storage/innobase/include/srv0srv.h
+++ b/storage/innobase/include/srv0srv.h
@@ -592,6 +592,8 @@ extern ulong srv_fatal_semaphore_wait_threshold;
/** Buffer pool dump status frequence in percentages */
extern ulong srv_buf_dump_status_frequency;
+#define srv_max_purge_threads 32
+
# ifdef UNIV_PFS_THREAD
/* Keys to register InnoDB threads with performance schema */
extern mysql_pfs_key_t buf_dump_thread_key;
@@ -1105,8 +1107,23 @@ struct srv_slot_t{
to do */
que_thr_t* thr; /*!< suspended query thread
(only used for user threads) */
+#ifdef UNIV_DEBUG
+ struct debug_sync_t {
+ UT_LIST_NODE_T(debug_sync_t) debug_sync_list;
+ };
+ UT_LIST_BASE_NODE_T(debug_sync_t) debug_sync;
+ rw_lock_t debug_sync_lock;
+#endif
};
+#ifdef UNIV_DEBUG
+typedef void srv_slot_callback_t(srv_slot_t*, const void*);
+
+void srv_for_each_thread(srv_thread_type type,
+ srv_slot_callback_t callback,
+ const void *arg);
+#endif
+
#ifdef WITH_WSREP
UNIV_INTERN
void
diff --git a/storage/innobase/include/trx0purge.h b/storage/innobase/include/trx0purge.h
index 71e0b78a105..4bc5aded341 100644
--- a/storage/innobase/include/trx0purge.h
+++ b/storage/innobase/include/trx0purge.h
@@ -61,7 +61,12 @@ trx_purge(
/*======*/
ulint n_purge_threads, /*!< in: number of purge tasks to
submit to task queue. */
- bool truncate); /*!< in: truncate history if true */
+ bool truncate /*!< in: truncate history if true */
+#ifdef UNIV_DEBUG
+ , srv_slot_t *slot /*!< in/out: purge coordinator
+ thread slot */
+#endif
+);
/** Rollback segements from a given transaction with trx-no
scheduled for purge. */
diff --git a/storage/innobase/row/row0purge.cc b/storage/innobase/row/row0purge.cc
index 89e336e1724..8c83482f53e 100644
--- a/storage/innobase/row/row0purge.cc
+++ b/storage/innobase/row/row0purge.cc
@@ -46,6 +46,7 @@ Created 3/14/1997 Heikki Tuuri
#include "handler.h"
#include "ha_innodb.h"
#include "fil0fil.h"
+#include "debug_sync.h"
/*************************************************************************
IMPORTANT NOTE: Any operation that generates redo MUST check that there
@@ -1306,6 +1307,26 @@ row_purge_step(
node->start();
+#ifdef UNIV_DEBUG
+ srv_slot_t *slot = thr->thread_slot;
+ ut_ad(slot);
+
+ rw_lock_x_lock(&slot->debug_sync_lock);
+ while (UT_LIST_GET_LEN(slot->debug_sync)) {
+ srv_slot_t::debug_sync_t *sync =
+ UT_LIST_GET_FIRST(slot->debug_sync);
+ const char* sync_str = reinterpret_cast<char*>(&sync[1]);
+ bool result = debug_sync_set_action(current_thd,
+ sync_str,
+ strlen(sync_str));
+ ut_a(!result);
+
+ UT_LIST_REMOVE(slot->debug_sync, sync);
+ ut_free(sync);
+ }
+ rw_lock_x_unlock(&slot->debug_sync_lock);
+#endif
+
if (!(node->undo_recs == NULL || ib_vector_is_empty(node->undo_recs))) {
trx_purge_rec_t*purge_rec;
diff --git a/storage/innobase/row/row0vers.cc b/storage/innobase/row/row0vers.cc
index 04237b8f7a4..b662ce92f28 100644
--- a/storage/innobase/row/row0vers.cc
+++ b/storage/innobase/row/row0vers.cc
@@ -464,6 +464,7 @@ row_vers_build_clust_v_col(
vcol_info->set_used();
maria_table = vcol_info->table();
}
+ DEBUG_SYNC(current_thd, "ib_clust_v_col_before_row_allocated");
innobase_allocate_row_for_vcol(thd, index,
&local_heap,
diff --git a/storage/innobase/srv/srv0srv.cc b/storage/innobase/srv/srv0srv.cc
index d130054b86a..556329e138e 100644
--- a/storage/innobase/srv/srv0srv.cc
+++ b/storage/innobase/srv/srv0srv.cc
@@ -594,7 +594,8 @@ struct srv_sys_t{
ulint n_sys_threads; /*!< size of the sys_threads
array */
- srv_slot_t sys_threads[32 + 1]; /*!< server thread table;
+ srv_slot_t
+ sys_threads[srv_max_purge_threads + 1]; /*!< server thread table;
os_event_set() and
os_event_reset() on
sys_threads[]->event are
@@ -642,11 +643,15 @@ and/or load it during startup. */
char srv_buffer_pool_dump_at_shutdown = TRUE;
char srv_buffer_pool_load_at_startup = TRUE;
+/** Slot index in the srv_sys.sys_threads array for the master thread. */
+#define SRV_MASTER_SLOT 0
+
/** Slot index in the srv_sys.sys_threads array for the purge thread. */
-static const ulint SRV_PURGE_SLOT = 1;
+#define SRV_PURGE_SLOT 1
-/** Slot index in the srv_sys.sys_threads array for the master thread. */
-static const ulint SRV_MASTER_SLOT = 0;
+/** Slot index in the srv_sys.sys_threads array from which purge workers start.
+ */
+#define SRV_WORKER_SLOTS_START 2
#ifdef HAVE_PSI_STAGE_INTERFACE
/** Performance schema stage event for monitoring ALTER TABLE progress
@@ -794,7 +799,7 @@ srv_reserve_slot(
case SRV_WORKER:
/* Find an empty slot, skip the master and purge slots. */
- for (slot = &srv_sys.sys_threads[2];
+ for (slot = &srv_sys.sys_threads[SRV_WORKER_SLOTS_START];
slot->in_use;
++slot) {
@@ -2458,8 +2463,9 @@ static bool srv_purge_should_exit()
/*********************************************************************//**
Fetch and execute a task from the work queue.
+@param [in,out] slot purge worker thread slot
@return true if a task was executed */
-static bool srv_task_execute()
+static bool srv_task_execute(ut_d(srv_slot_t *slot))
{
ut_ad(!srv_read_only_mode);
ut_ad(srv_force_recovery < SRV_FORCE_NO_BACKGROUND);
@@ -2470,6 +2476,7 @@ static bool srv_task_execute()
ut_a(que_node_get_type(thr->child) == QUE_NODE_PURGE);
UT_LIST_REMOVE(srv_sys.tasks, thr);
mutex_exit(&srv_sys.tasks_mutex);
+ ut_d(thr->thread_slot = slot);
que_run_threads(thr);
my_atomic_addlint(&purge_sys.n_completed, 1);
return true;
@@ -2506,6 +2513,13 @@ DECLARE_THREAD(srv_worker_thread)(
slot = srv_reserve_slot(SRV_WORKER);
+#ifdef UNIV_DEBUG
+ UT_LIST_INIT(slot->debug_sync,
+ &srv_slot_t::debug_sync_t::debug_sync_list);
+ rw_lock_create(PFS_NOT_INSTRUMENTED, &slot->debug_sync_lock,
+ SYNC_NO_ORDER_CHECK);
+#endif
+
ut_a(srv_n_purge_threads > 1);
ut_a(ulong(my_atomic_loadlint(&srv_sys.n_threads_active[SRV_WORKER]))
< srv_n_purge_threads);
@@ -2518,7 +2532,7 @@ DECLARE_THREAD(srv_worker_thread)(
srv_suspend_thread(slot);
srv_resume_thread(slot);
- if (srv_task_execute()) {
+ if (srv_task_execute(ut_d(slot))) {
/* If there are tasks in the queue, wakeup
the purge coordinator thread. */
@@ -2548,9 +2562,11 @@ DECLARE_THREAD(srv_worker_thread)(
/** Do the actual purge operation.
@param[in,out] n_total_purged total number of purged pages
@return length of history list before the last purge batch. */
-static
-ulint
-srv_do_purge(ulint* n_total_purged)
+static ulint srv_do_purge(ulint* n_total_purged
+#ifdef UNIV_DEBUG
+ , srv_slot_t* slot /*!< purge coordinator */
+#endif
+ )
{
ulint n_pages_purged;
@@ -2616,7 +2632,11 @@ srv_do_purge(ulint* n_total_purged)
n_pages_purged = trx_purge(
n_use_threads,
- (++count % rseg_truncate_frequency) == 0);
+ (++count % rseg_truncate_frequency) == 0
+#ifdef UNIV_DEBUG
+ , slot
+#endif
+ );
*n_total_purged += n_pages_purged;
} while (n_pages_purged > 0 && !purge_sys.paused()
@@ -2624,6 +2644,9 @@ srv_do_purge(ulint* n_total_purged)
return(rseg_history_len);
}
+#ifndef UNIV_DEBUG
+# define srv_do_purge(n_total_purged, slot) srv_do_purge(n_total_purged)
+#endif
/*********************************************************************//**
Suspend the purge coordinator thread. */
@@ -2718,6 +2741,12 @@ DECLARE_THREAD(srv_purge_coordinator_thread)(
slot = srv_reserve_slot(SRV_PURGE);
+#ifdef UNIV_DEBUG
+ UT_LIST_INIT(slot->debug_sync,
+ &srv_slot_t::debug_sync_t::debug_sync_list);
+ rw_lock_create(PFS_NOT_INSTRUMENTED, &slot->debug_sync_lock,
+ SYNC_NO_ORDER_CHECK);
+#endif
ulint rseg_history_len = trx_sys.history_size();
do {
@@ -2739,7 +2768,7 @@ DECLARE_THREAD(srv_purge_coordinator_thread)(
n_total_purged = 0;
- rseg_history_len = srv_do_purge(&n_total_purged);
+ rseg_history_len = srv_do_purge(&n_total_purged, slot);
} while (!srv_purge_should_exit());
/* The task queue should always be empty, independent of fast
@@ -2897,3 +2926,33 @@ srv_was_tablespace_truncated(const fil_space_t* space)
return (!is_system_tablespace(space->id)
&& truncate_t::was_tablespace_truncated(space->id));
}
+
+#ifdef UNIV_DEBUG
+static ulint get_first_slot(srv_thread_type type)
+{
+ switch (type) {
+ case SRV_MASTER:
+ return SRV_MASTER_SLOT;
+ case SRV_PURGE:
+ return SRV_PURGE_SLOT;
+ case SRV_WORKER:
+ /* Find an empty slot, skip the master and purge slots. */
+ return SRV_WORKER_SLOTS_START;
+ default:
+ ut_error;
+ }
+}
+
+void srv_for_each_thread(srv_thread_type type,
+ srv_slot_callback_t callback,
+ const void *arg)
+{
+ for (ulint slot_idx= get_first_slot(type);
+ slot_idx < srv_sys.n_sys_threads
+ && srv_sys.sys_threads[slot_idx].in_use
+ && srv_sys.sys_threads[slot_idx].type == type;
+ slot_idx++) {
+ callback(&srv_sys.sys_threads[slot_idx], arg);
+ }
+}
+#endif
diff --git a/storage/innobase/trx/trx0purge.cc b/storage/innobase/trx/trx0purge.cc
index 475babb6195..3ae8db63121 100644
--- a/storage/innobase/trx/trx0purge.cc
+++ b/storage/innobase/trx/trx0purge.cc
@@ -1561,7 +1561,12 @@ trx_purge(
/*======*/
ulint n_purge_threads, /*!< in: number of purge tasks
to submit to the work queue */
- bool truncate) /*!< in: truncate history if true */
+ bool truncate /*!< in: truncate history if true */
+#ifdef UNIV_DEBUG
+ , srv_slot_t *slot /*!< in/out: purge coordinator
+ thread slot */
+#endif
+)
{
que_thr_t* thr = NULL;
ulint n_pages_handled;
@@ -1597,6 +1602,7 @@ trx_purge(
thr = que_fork_scheduler_round_robin(purge_sys.query, thr);
+ ut_d(thr->thread_slot = slot);
que_run_threads(thr);
my_atomic_addlint(&purge_sys.n_completed, 1);
diff --git a/storage/tokudb/mysql-test/tokudb_parts/r/partition_debug_tokudb.result b/storage/tokudb/mysql-test/tokudb_parts/r/partition_debug_tokudb.result
index 125155bad9f..ae95fc691a4 100644
--- a/storage/tokudb/mysql-test/tokudb_parts/r/partition_debug_tokudb.result
+++ b/storage/tokudb/mysql-test/tokudb_parts/r/partition_debug_tokudb.result
@@ -12,6 +12,7 @@ call mtr.add_suppression("TokuDB: Warning: MySQL is trying to drop table ");
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
flush tables;
# Crash testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -73,7 +74,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -137,7 +138,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -201,7 +202,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -265,7 +266,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -329,7 +330,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -393,7 +394,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -457,7 +458,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -522,7 +523,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -585,7 +586,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_add_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -648,8 +649,9 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery testing ADD PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -766,7 +768,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -883,7 +885,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1000,7 +1002,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1117,7 +1119,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1234,7 +1236,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1351,7 +1353,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1468,7 +1470,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1587,7 +1589,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1706,7 +1708,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_add_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1825,8 +1827,9 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_add_partition_10";
+SET SESSION debug_dbug=@save_dbug;
# Test DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1887,7 +1890,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -1950,7 +1953,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2013,7 +2016,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2071,7 +2074,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2129,7 +2132,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2187,7 +2190,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2243,7 +2246,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2299,7 +2302,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_drop_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2355,8 +2358,9 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery DROP PARTITION
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2471,7 +2475,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2586,7 +2590,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2701,7 +2705,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2806,7 +2810,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -2911,7 +2915,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3016,7 +3020,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3121,7 +3125,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3226,7 +3230,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_drop_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3331,9 +3335,10 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_drop_partition_9";
+SET SESSION debug_dbug=@save_dbug;
# Test change partition (REORGANIZE/REBUILD/COALESCE
# or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3396,7 +3401,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3461,7 +3466,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3526,7 +3531,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3591,7 +3596,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3656,7 +3661,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3721,7 +3726,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3787,7 +3792,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3853,7 +3858,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3917,7 +3922,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -3981,7 +3986,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_11";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4045,7 +4050,7 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,crash_change_partition_12";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4109,9 +4114,10 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t1;
-SET SESSION debug_dbug="-d,crash_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
# Error recovery change partition (REORGANIZE/REBUILD/COALESCE
# or ADD HASH PARTITION).
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_1";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4230,7 +4236,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_2";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4349,7 +4355,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_3";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4468,7 +4474,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_4";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4587,7 +4593,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_5";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4706,7 +4712,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_6";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4825,7 +4831,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_7";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -4946,7 +4952,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_8";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -5067,7 +5073,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_9";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -5188,7 +5194,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_9";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_10";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -5309,7 +5315,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_10";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_11";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -5430,7 +5436,7 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_11";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,fail_change_partition_12";
CREATE TABLE t1 (a INT, b VARCHAR(64))
ENGINE = 'TokuDB'
@@ -5551,13 +5557,14 @@ a b
4 Original from partition p0
UNLOCK TABLES;
DROP TABLE t1;
-SET SESSION debug_dbug="-d,fail_change_partition_12";
+SET SESSION debug_dbug=@save_dbug;
#
# WL#4445: EXCHANGE PARTITION WITH TABLE
# Verify ddl_log and TokuDB in case of crashing.
call mtr.add_suppression("TokuDB: Warning: allocated tablespace .*, old maximum was ");
call mtr.add_suppression("Attempting backtrace. You can use the following information to find out");
call mtr.add_suppression("table .* does not exist in the TokuDB internal");
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_1";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -5656,7 +5663,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_2";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -5755,7 +5762,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_3";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -5854,7 +5861,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_4";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -5953,7 +5960,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_5";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6052,7 +6059,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_6";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6151,7 +6158,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_7";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6250,7 +6257,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_8";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6349,7 +6356,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_abort_9";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6448,7 +6455,8 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_abort_9";
+SET SESSION debug_dbug=@save_dbug;
+SET @save_dbug=@@debug_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_1";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6542,7 +6550,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_1";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_2";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6636,7 +6644,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_2";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_3";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6730,7 +6738,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_3";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_4";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6824,7 +6832,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_4";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_5";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -6918,7 +6926,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_5";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_6";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7012,7 +7020,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_6";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_7";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7106,7 +7114,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_7";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_8";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7200,7 +7208,7 @@ a b
7 Original from table t2
8 Original from table t2
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_8";
+SET SESSION debug_dbug=@save_dbug;
SET SESSION debug_dbug="+d,exchange_partition_fail_9";
CREATE TABLE t2 (a INT, b VARCHAR(64)) ENGINE = TokuDB;
INSERT INTO t2 VALUES (5, "Original from table t2"), (6, "Original from table t2"), (7, "Original from table t2"), (8, "Original from table t2");
@@ -7294,4 +7302,4 @@ a b
3 Original from partition p0
4 Original from partition p0
DROP TABLE t2;
-SET SESSION debug_dbug="-d,exchange_partition_fail_9";
+SET SESSION debug_dbug=@save_dbug;