2
# Bug#49907: ALTER TABLE ... TRUNCATE PARTITION
3
# does not wait for locks on the table
5
CREATE TABLE t1 (a INT)
8
(PARTITION p0 VALUES LESS THAN (15),
9
PARTITION pMax VALUES LESS THAN MAXVALUE);
10
INSERT INTO t1 VALUES (1), (11), (21), (33);
12
DELETE FROM t1 WHERE a = 11;
19
ALTER TABLE t1 TRUNCATE PARTITION pMax;
26
# Commit will allow the TRUNCATE to finish
36
# Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
37
# concurrent I_S query
38
create table t1 (a int)
39
engine = innodb stats_persistent=0
40
partition by range (a)
41
(partition p0 values less than MAXVALUE);
42
insert into t1 values (1), (11), (21), (33);
51
t1 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) */
59
SET DEBUG_SYNC='before_open_in_get_all_tables SIGNAL parked WAIT_FOR open';
60
SET DEBUG_SYNC='partition_open_error SIGNAL alter WAIT_FOR finish';
61
SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION,
62
PARTITION_DESCRIPTION, TABLE_ROWS
63
FROM INFORMATION_SCHEMA.PARTITIONS
64
WHERE TABLE_NAME = 't1' AND TABLE_SCHEMA = 'test';
65
SET DEBUG_SYNC = 'now WAIT_FOR parked';
66
# When waiting for the name lock in get_all_tables in sql_show.cc
67
# this will not be concurrent any more, thus the TIMEOUT
68
SET DEBUG_SYNC = 'before_rename_partitions SIGNAL open WAIT_FOR alter TIMEOUT 1';
69
# Needs to be executed twice, since first is this 'SET DEBUG_SYNC ...'
70
SET DEBUG_SYNC = 'before_close_thread_tables SIGNAL finish EXECUTE 2';
71
ALTER TABLE t1 REORGANIZE PARTITION p0 INTO
72
(PARTITION p0 VALUES LESS THAN (10),
73
PARTITION p10 VALUES LESS THAN MAXVALUE);
75
Warning 1639 debug sync point wait timed out
76
TABLE_SCHEMA TABLE_NAME PARTITION_NAME PARTITION_ORDINAL_POSITION PARTITION_DESCRIPTION TABLE_ROWS
78
test t1 p10 2 MAXVALUE 3
85
t1 CREATE TABLE `t1` (
86
`a` int(11) DEFAULT NULL
87
) ENGINE=InnoDB DEFAULT CHARSET=latin1 STATS_PERSISTENT=0
88
/*!50100 PARTITION BY RANGE (a)
89
(PARTITION p0 VALUES LESS THAN (10) ENGINE = InnoDB,
90
PARTITION p10 VALUES LESS THAN MAXVALUE ENGINE = InnoDB) */
98
SET DEBUG_SYNC = 'RESET';