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