summaryrefslogtreecommitdiff
path: root/mysql-test/suite/innodb/t/purge_secondary_mdev-16222.test
blob: 475eb92ed12965921c096311b01bd5c7843572ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
--source include/have_debug.inc
--source include/have_innodb.inc

--echo #
--echo # MDEV-16222 Assertion `0' failed in row_purge_remove_sec_if_poss_leaf on table with virtual columns and indexes
--echo #

--let $datadir= `select @@datadir`
set @saved_frequency= @@global.innodb_purge_rseg_truncate_frequency;
set global innodb_purge_rseg_truncate_frequency= 1;
set @saved_dbug= @@global.debug_dbug;
set global debug_dbug= "+d,ib_purge_virtual_mdev_16222_1,ib_purge_virtual_mdev_16222_2";

create table t1 (
  pk serial, vb tinyblob as (b) virtual, b tinyblob,
  primary key(pk), index (vb(64)))
engine innodb;

insert ignore into t1 (b) values ('foo');

select * into outfile 'load.data' from t1;
load data infile 'load.data' replace into table t1;

set debug_sync= "now WAIT_FOR latch_released";
set global debug_dbug= "-d,ib_purge_virtual_mdev_16222_1";
drop table t1;
--remove_file $datadir/test/load.data

set debug_sync= "now SIGNAL drop_started WAIT_FOR got_no_such_table";

create table t1 (
  pk serial, vb tinyblob as (b) virtual, b tinyblob,
  primary key(pk), index (vb(64)))
engine innodb;

insert ignore into t1 (b) values ('foo');

select * into outfile 'load.data' from t1;
load data infile 'load.data' replace into table t1;

set debug_sync= "now WAIT_FOR got_no_such_table";
# FIXME: Racing condition here:
# 1. purge thread goes into sending got_no_such_table
# 2. test thread finishes debug_sync= "RESET" below
# 3. purge thread sends got_no_such_table
set global debug_dbug= @saved_dbug;

# cleanup
drop table t1;
--remove_file $datadir/test/load.data

set global innodb_purge_rseg_truncate_frequency= @saved_frequency;
set debug_sync= "RESET";