mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
Problem was that the handler call ::extra(HA_EXTRA_CACHE) was cached but the ::extra(HA_EXTRA_PREPARE_FOR_UPDATE) was not. Solution was to also cache the other call and forward it when moving to a new partition to scan. mysql-test/r/partition.result: test result mysql-test/t/partition.test: New test from bug report. sql/ha_partition.cc: cache the HA_EXTRA_PREPARE_FOR_UPDATE just like HA_EXTRA_CACHE. sql/ha_partition.h: Added cache flag for HA_EXTRA_PREPARE_FOR_UPDATE
This commit is contained in:
@ -1,4 +1,29 @@
|
||||
drop table if exists t1, t2;
|
||||
#
|
||||
# Bug#55458: Partitioned MyISAM table gets crashed by multi-table update
|
||||
#
|
||||
CREATE TABLE t1 (
|
||||
`id` int NOT NULL,
|
||||
`user_num` int DEFAULT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM CHARSET=latin1;
|
||||
INSERT INTO t1 VALUES (1,8601);
|
||||
INSERT INTO t1 VALUES (2,8601);
|
||||
INSERT INTO t1 VALUES (3,8601);
|
||||
INSERT INTO t1 VALUES (4,8601);
|
||||
CREATE TABLE t2 (
|
||||
`id` int(11) NOT NULL,
|
||||
`user_num` int DEFAULT NULL,
|
||||
`name` varchar(64) NOT NULL,
|
||||
PRIMARY KEY (`id`)
|
||||
) ENGINE=MyISAM CHARSET=latin1
|
||||
PARTITION BY HASH (id)
|
||||
PARTITIONS 2;
|
||||
INSERT INTO t2 VALUES (1,8601,'John');
|
||||
INSERT INTO t2 VALUES (2,8601,'JS');
|
||||
INSERT INTO t2 VALUES (3,8601,'John S');
|
||||
UPDATE t1, t2 SET t2.name = 'John Smith' WHERE t1.user_num = t2.user_num;
|
||||
DROP TABLE t1, t2;
|
||||
CREATE TABLE t1 (a INT, b INT)
|
||||
PARTITION BY LIST (a)
|
||||
SUBPARTITION BY HASH (b)
|
||||
|
Reference in New Issue
Block a user