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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
--source include/have_innodb.inc
--source include/have_partition.inc
--source include/have_debug.inc
--source include/have_debug_sync.inc
CREATE TABLE t1 (a INT, b VARCHAR(10)) ENGINE=InnoDB
STATS_PERSISTENT=1 STATS_AUTO_RECALC=0
PARTITION BY RANGE(a)
(PARTITION pa VALUES LESS THAN (3),
PARTITION pb VALUES LESS THAN (5));
INSERT INTO t1 VALUES(2,'two'),(2,'two'),(4,'four');
connect ddl,localhost,root,,test;
SET DEBUG_SYNC = 'inplace_after_index_build SIGNAL go WAIT_FOR done';
send ALTER TABLE t1 ADD UNIQUE KEY (a,b(3));
connection default;
SET DEBUG_SYNC = 'now WAIT_FOR go';
BEGIN;
SELECT * FROM t1 FOR UPDATE;
SET DEBUG_SYNC = 'now SIGNAL done';
connection ddl;
--error ER_DUP_ENTRY
reap;
connection default;
DELETE FROM t1;
SET DEBUG_SYNC = 'RESET';
CHECK TABLE t1;
CREATE TABLE t(a INT, b VARCHAR(10)) ENGINE=InnoDB
STATS_PERSISTENT=1 STATS_AUTO_RECALC=1;
RENAME TABLE t TO u;
DELETE FROM mysql.innodb_table_stats WHERE table_name='u';
DELETE FROM mysql.innodb_index_stats WHERE table_name='u';
send SET STATEMENT debug_dbug='+d,dict_stats_save_exit_notify_and_wait' FOR
SELECT * FROM u;
connection ddl;
SET DEBUG_SYNC='open_tables_after_open_and_process_table
WAIT_FOR dict_stats_save_finished';
send ALTER TABLE t1 EXCHANGE PARTITION pb WITH TABLE u;
connect sync,localhost,root;
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = 'debug sync point: now'
and info like 'SET STATEMENT debug_dbug%SELECT * FROM u';
--source include/wait_condition.inc
let $wait_condition=
select count(*) = 1 from information_schema.processlist
where state = 'Waiting for table metadata lock'
and info like 'ALTER TABLE t1 EXCHANGE PARTITION pb WITH TABLE u';
--source include/wait_condition.inc
SET DEBUG_SYNC='now SIGNAL dict_stats_save_unblock';
disconnect sync;
connection default;
reap;
connection ddl;
reap;
disconnect ddl;
connection default;
SELECT * FROM u;
SET DEBUG_SYNC = 'RESET';
DROP TABLE t1,u;
|