mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables
Problem was usage of read_range_first with an empty key. Solution was to not to give a key if it was empty. mysql-test/r/partition.result: Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables Updated test result. mysql-test/t/partition.test: Bug#40954: Crash in MyISAM index code with concurrency test using partitioned tables Added test case
This commit is contained in:
@ -1,4 +1,16 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk INT NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (pk)
|
||||||
|
)
|
||||||
|
/*!50100 PARTITION BY HASH (pk)
|
||||||
|
PARTITIONS 2 */;
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT * FROM t1 WHERE pk < 0 ORDER BY pk;
|
||||||
|
pk
|
||||||
|
DROP TABLE t1;
|
||||||
CREATE TABLE t1 (a INT NOT NULL, KEY(a))
|
CREATE TABLE t1 (a INT NOT NULL, KEY(a))
|
||||||
PARTITION BY RANGE(a)
|
PARTITION BY RANGE(a)
|
||||||
(PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN MAXVALUE);
|
(PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN MAXVALUE);
|
||||||
|
@ -14,6 +14,21 @@
|
|||||||
drop table if exists t1, t2;
|
drop table if exists t1, t2;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#40954: Crash if range search and order by.
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (
|
||||||
|
pk INT NOT NULL AUTO_INCREMENT,
|
||||||
|
PRIMARY KEY (pk)
|
||||||
|
)
|
||||||
|
/*!50100 PARTITION BY HASH (pk)
|
||||||
|
PARTITIONS 2 */;
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
INSERT INTO t1 VALUES (NULL);
|
||||||
|
SELECT * FROM t1 WHERE pk < 0 ORDER BY pk;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
# Bug#40494: Crash MYSQL server crashes on range access with partitioning
|
# Bug#40494: Crash MYSQL server crashes on range access with partitioning
|
||||||
# and order by
|
# and order by
|
||||||
|
@ -4490,7 +4490,8 @@ int ha_partition::handle_ordered_index_scan(uchar *buf, bool reverse_order)
|
|||||||
This can only read record to table->record[0], as it was set when
|
This can only read record to table->record[0], as it was set when
|
||||||
the table was being opened. We have to memcpy data ourselves.
|
the table was being opened. We have to memcpy data ourselves.
|
||||||
*/
|
*/
|
||||||
error= file->read_range_first(&m_start_key, end_range, eq_range, TRUE);
|
error= file->read_range_first(m_start_key.key? &m_start_key: NULL,
|
||||||
|
end_range, eq_range, TRUE);
|
||||||
memcpy(rec_buf_ptr, table->record[0], m_rec_length);
|
memcpy(rec_buf_ptr, table->record[0], m_rec_length);
|
||||||
reverse_order= FALSE;
|
reverse_order= FALSE;
|
||||||
break;
|
break;
|
||||||
|
Reference in New Issue
Block a user