#At file:///Users/mattiasj/clones/bzrroot/b40954-51-bugteam/
2708 Mattias Jonsson 2008-11-24
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.
modified:
mysql-test/r/partition.result
mysql-test/t/partition.test
sql/ha_partition.cc
per-file messages:
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
sql/ha_partition.cc
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.
=== modified file 'mysql-test/r/partition.result'
--- a/mysql-test/r/partition.result 2008-11-06 14:18:25 +0000
+++ b/mysql-test/r/partition.result 2008-11-24 16:24:03 +0000
@@ -1,4 +1,16 @@
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))
PARTITION BY RANGE(a)
(PARTITION p1 VALUES LESS THAN (200), PARTITION pmax VALUES LESS THAN MAXVALUE);
=== modified file 'mysql-test/t/partition.test'
--- a/mysql-test/t/partition.test 2008-11-06 14:18:25 +0000
+++ b/mysql-test/t/partition.test 2008-11-24 16:24:03 +0000
@@ -15,6 +15,21 @@ drop table if exists t1, t2;
--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
# and order by
#
=== modified file 'sql/ha_partition.cc'
--- a/sql/ha_partition.cc 2008-11-10 20:13:24 +0000
+++ b/sql/ha_partition.cc 2008-11-24 16:24:03 +0000
@@ -4490,7 +4490,8 @@ int ha_partition::handle_ordered_index_s
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.
*/
- 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);
reverse_order= FALSE;
break;
| Thread |
|---|
| • bzr commit into mysql-5.1 branch (mattias.jonsson:2708) Bug#40954 | Mattias Jonsson | 24 Nov |