1# 2# Bug#49907: ALTER TABLE ... TRUNCATE PARTITION 3# does not wait for locks on the table 4# 5CREATE TABLE t1 (a INT) 6ENGINE = InnoDB 7PARTITION BY RANGE (a) 8(PARTITION p0 VALUES LESS THAN (15), 9PARTITION pMax VALUES LESS THAN MAXVALUE); 10INSERT INTO t1 VALUES (1), (11), (21), (33); 11BEGIN; 12DELETE FROM t1 WHERE a = 11; 13SELECT * FROM t1; 14a 151 1621 1733 18# con1 (send) 19ALTER TABLE t1 TRUNCATE PARTITION pMax; 20# con default 21SELECT * FROM t1; 22a 231 2421 2533 26# Commit will allow the TRUNCATE to finish 27COMMIT; 28# con1 (reap) 29# con1 (disconnect) 30# default connection 31SELECT * FROM t1; 32a 331 34DROP TABLE t1; 35# 36# Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with 37# concurrent I_S query 38create table t1 (a int) 39engine = innodb stats_persistent=0 40partition by range (a) 41(partition p0 values less than MAXVALUE); 42insert into t1 values (1), (11), (21), (33); 43SELECT * FROM t1; 44a 451 4611 4721 4833 49SHOW CREATE TABLE t1; 50Table Create Table 51t1 CREATE TABLE `t1` ( 52 `a` int(11) DEFAULT NULL 53) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=0 54/*!50100 PARTITION BY RANGE (a) 55(PARTITION p0 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */ 56t1#P#p0.ibd 57t1.frm 58SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open'; 59SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish'; 60SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, 61PARTITION_DESCRIPTION, TABLE_ROWS 62FROM INFORMATION_SCHEMA.PARTITIONS 63WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test'; 64SET DEBUG_SYNC = 'now WAIT_FOR parked'; 65# When waiting for the name lock in get_all_tables in sql_show.cc 66# this will not be concurrent any more, thus the TIMEOUT 67SET DEBUG_SYNC = 'before_handle_alter_part_end SIGNAL open WAIT_FOR alter TIMEOUT 1'; 68# Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...' 69SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2'; 70ALTER TABLE t1 REORGANIZE PARTITION p0 INTO 71(PARTITION p0 VALUES LESS THAN (10), 72PARTITION p10 VALUES LESS THAN MAXVALUE); 73Warnings: 74Warning 1639 debug sync point wait timed out 75TABLE_SCHEMA TABLE_NAME PARTITION_NAME PARTITION_ORDINAL_POSITION PARTITION_DESCRIPTION TABLE_ROWS 76test t1 p0 1 10 1 77test t1 p10 2 MAXVALUE 3 78t1#P#p0.ibd 79t1#P#p10.ibd 80t1.frm 81SHOW CREATE TABLE t1; 82Table Create Table 83t1 CREATE TABLE `t1` ( 84 `a` int(11) DEFAULT NULL 85) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=0 86/*!50100 PARTITION BY RANGE (a) 87(PARTITION p0 VALUES LESS THAN (10) ENGINE = InnoDB, 88 PARTITION p10 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */ 89SELECT * FROM t1; 90a 911 9211 9321 9433 95drop table t1; 96SET DEBUG_SYNC = 'RESET'; 97