--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";