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