1# 2# Bug#49907: ALTER TABLE ... TRUNCATE PARTITION 3# does not wait for locks on the table 4# 5CREATE TABLE t1 (a INT) 6ENGINE = TokuDB 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 18connect con1, localhost, root,,; 19# con1 (send) 20ALTER TABLE t1 TRUNCATE PARTITION pMax; 21connection default; 22# con default 23SELECT * FROM t1; 24a 251 2621 2733 28# Commit will allow the TRUNCATE to finish 29COMMIT; 30# con1 (reap) 31connection con1; 32# con1 (disconnect) 33disconnect con1; 34connection default; 35# default connection 36SELECT * FROM t1; 37a 381 39DROP TABLE t1; 40# 41# Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with 42# concurrent I_S query 43create table t1 (a int) 44engine = tokudb stats_persistent=0 45partition by range (a) 46(partition p0 values less than MAXVALUE); 47insert into t1 values (1), (11), (21), (33); 48SELECT * FROM t1; 49a 501 5111 5221 5333 54SHOW CREATE TABLE t1; 55Table Create Table 56t1 CREATE TABLE `t1` ( 57 `a` int(11) DEFAULT NULL 58) ENGINE=TokuDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=0 59 PARTITION BY RANGE (`a`) 60(PARTITION `p0` VALUES LESS THAN MAXVALUE ENGINE = TokuDB) 61db.opt 62t1.frm 63t1.par 64SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open'; 65SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish'; 66SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, 67PARTITION_DESCRIPTION, TABLE_ROWS 68FROM INFORMATION_SCHEMA.PARTITIONS 69WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test'; 70connect con1, localhost, root,,; 71SET DEBUG_SYNC = 'now WAIT_FOR parked'; 72# When waiting for the name lock in get_all_tables in sql_show.cc 73# this will not be concurrent any more, thus the TIMEOUT 74SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1'; 75# Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...' 76SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2'; 77ALTER TABLE t1 REORGANIZE PARTITION p0 INTO 78(PARTITION p0 VALUES LESS THAN (10), 79PARTITION p10 VALUES LESS THAN MAXVALUE); 80Warnings: 81Warning 1639 debug sync point wait timed out 82disconnect con1; 83connection default; 84TABLE_SCHEMA TABLE_NAME PARTITION_NAME PARTITION_ORDINAL_POSITION PARTITION_DESCRIPTION TABLE_ROWS 85test t1 p0 1 10 1 86test t1 p10 2 MAXVALUE 3 87db.opt 88t1.frm 89t1.par 90SHOW CREATE TABLE t1; 91Table Create Table 92t1 CREATE TABLE `t1` ( 93 `a` int(11) DEFAULT NULL 94) ENGINE=TokuDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=0 95 PARTITION BY RANGE (`a`) 96(PARTITION `p0` VALUES LESS THAN (10) ENGINE = TokuDB, 97 PARTITION `p10` VALUES LESS THAN MAXVALUE ENGINE = TokuDB) 98SELECT * FROM t1; 99a 1001 10111 10221 10333 104drop table t1; 105db.opt 106SET DEBUG_SYNC = 'RESET'; 107