Description:
Dropping a partiton of a table that has a trigger defined on it, causes a server crash.
CREATE DATABASE IF NOT EXISTS part_db;
USE part_db;
CREATE TABLE trigger_result (
entry VARCHAR(30)
);
CREATE TABLE part_range (i int) PARTITION BY RANGE (i) (
PARTITION p0 VALUES LESS THAN (2),
PARTITION p1 VALUES LESS THAN (8),
PARTITION p2 VALUES LESS THAN (17),
PARTITION p3 VALUES LESS THAN (64)
);
CREATE TRIGGER part_trigger BEFORE INSERT ON part_range
FOR EACH ROW INSERT INTO trigger_result VALUES ('part2');
ALTER TABLE part_range DROP PARTITION p1;
>>> ERROR 2013 (HY000): Lost connection to MySQL server during query
Note: 1) The problem is not observed if the table does not have a trigger
defined on it.
2) The problem is not observed in 5.1.22
Resolving the stack trace rep[orts the following:
0x81c68c1 handle_segfault + 437
0x81c2df0 _Z19mysql_unlock_tablesP3THDP13st_mysql_lock + 8
0x8137465 _Z26fast_alter_partition_tableP3THDP8st_tableP10Alter_infoP24st_ha_create_informationP10TABLE_LISTPcPKcj + 1889
0x829215e _Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb + 2518
0x81d24f9 _Z21mysql_execute_commandP3THD + 2477
0x81d7d3d _Z11mysql_parseP3THDPKcjPS2_ + 269
0x81d09bd _Z16dispatch_command19enum_server_commandP3THDPcj + 961
0x81d05b0 _Z10do_commandP3THD + 192
0x81cec51 handle_one_connection + 289
0x40031297 _end + 932987655
0x4017037e _end + 934294510
master.err file reports a signal 11 with the following stack:
0x81c68c1
0x81c2df0
0x8137465
0x829215e
0x81d24f9
0x81d7d3d
0x81d09bd
0x81d05b0
0x81cec51
0x40031297
0x4017037e
How to repeat:
Run the attached test case
Suggested fix:
Server should not crash
Description: Dropping a partiton of a table that has a trigger defined on it, causes a server crash. CREATE DATABASE IF NOT EXISTS part_db; USE part_db; CREATE TABLE trigger_result ( entry VARCHAR(30) ); CREATE TABLE part_range (i int) PARTITION BY RANGE (i) ( PARTITION p0 VALUES LESS THAN (2), PARTITION p1 VALUES LESS THAN (8), PARTITION p2 VALUES LESS THAN (17), PARTITION p3 VALUES LESS THAN (64) ); CREATE TRIGGER part_trigger BEFORE INSERT ON part_range FOR EACH ROW INSERT INTO trigger_result VALUES ('part2'); ALTER TABLE part_range DROP PARTITION p1; >>> ERROR 2013 (HY000): Lost connection to MySQL server during query Note: 1) The problem is not observed if the table does not have a trigger defined on it. 2) The problem is not observed in 5.1.22 Resolving the stack trace rep[orts the following: 0x81c68c1 handle_segfault + 437 0x81c2df0 _Z19mysql_unlock_tablesP3THDP13st_mysql_lock + 8 0x8137465 _Z26fast_alter_partition_tableP3THDP8st_tableP10Alter_infoP24st_ha_create_informationP10TABLE_LISTPcPKcj + 1889 0x829215e _Z17mysql_alter_tableP3THDPcS1_P24st_ha_create_informationP10TABLE_LISTP10Alter_infojP8st_orderb + 2518 0x81d24f9 _Z21mysql_execute_commandP3THD + 2477 0x81d7d3d _Z11mysql_parseP3THDPKcjPS2_ + 269 0x81d09bd _Z16dispatch_command19enum_server_commandP3THDPcj + 961 0x81d05b0 _Z10do_commandP3THD + 192 0x81cec51 handle_one_connection + 289 0x40031297 _end + 932987655 0x4017037e _end + 934294510 master.err file reports a signal 11 with the following stack: 0x81c68c1 0x81c2df0 0x8137465 0x829215e 0x81d24f9 0x81d7d3d 0x81d09bd 0x81d05b0 0x81cec51 0x40031297 0x4017037e How to repeat: Run the attached test case Suggested fix: Server should not crash