diff options
-rw-r--r-- | mysql-test/r/partition.result | 8 | ||||
-rw-r--r-- | mysql-test/t/partition.test | 9 | ||||
-rw-r--r-- | sql/ha_partition.cc | 3 |
3 files changed, 19 insertions, 1 deletions
diff --git a/mysql-test/r/partition.result b/mysql-test/r/partition.result index 47ee2be6f51..95f55a25166 100644 --- a/mysql-test/r/partition.result +++ b/mysql-test/r/partition.result @@ -1057,4 +1057,12 @@ alter table t1 add partition (partition p2 values in (3)); alter table t1 drop partition p2; use test; drop database db99; +create table t1 (a int, index(a)) +partition by hash(a); +insert into t1 values (1),(2); +select * from t1 ORDER BY a DESC; +a +2 +1 +drop table t1; End of 5.1 tests diff --git a/mysql-test/t/partition.test b/mysql-test/t/partition.test index 7ef5f66cd9e..ed0ec57d30f 100644 --- a/mysql-test/t/partition.test +++ b/mysql-test/t/partition.test @@ -1223,4 +1223,13 @@ alter table t1 drop partition p2; use test; drop database db99; +# +# Bug 20583 Partitions: Crash using index_last +# +create table t1 (a int, index(a)) +partition by hash(a); +insert into t1 values (1),(2); +select * from t1 ORDER BY a DESC; +drop table t1; + --echo End of 5.1 tests diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 7929257d608..c0257e08537 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -3400,7 +3400,8 @@ int ha_partition::common_first_last(byte *buf) if ((error= partition_scan_set_up(buf, FALSE))) return error; - if (!m_ordered_scan_ongoing) + if (!m_ordered_scan_ongoing && + m_index_scan_type != partition_index_last) return handle_unordered_scan_next_partition(buf); return handle_ordered_index_scan(buf); } |