diff options
author | Alexey Botchkov <holyfoot@askmonty.org> | 2019-11-20 00:33:32 +0400 |
---|---|---|
committer | Alexey Botchkov <holyfoot@askmonty.org> | 2019-11-20 00:33:32 +0400 |
commit | 7b5654f3e987dcbaa8cb0fdfd3486ffb3fc4f8e3 (patch) | |
tree | 03b0b862168b625e83c8573204e507cb8156beae | |
parent | 39d8652ca529e712430f57addc098b71521449e3 (diff) | |
download | mariadb-git-7b5654f3e987dcbaa8cb0fdfd3486ffb3fc4f8e3.tar.gz |
MDEV-14667 Assertion `used_parts > 0' failed in ha_partition::init_record_priority_queue.
Do not fail fi all the partitions were pruned out.
-rw-r--r-- | mysql-test/main/partition_pruning.result | 10 | ||||
-rw-r--r-- | mysql-test/main/partition_pruning.test | 13 | ||||
-rw-r--r-- | sql/ha_partition.cc | 5 |
3 files changed, 27 insertions, 1 deletions
diff --git a/mysql-test/main/partition_pruning.result b/mysql-test/main/partition_pruning.result index 00bd24101d6..6a97541f2db 100644 --- a/mysql-test/main/partition_pruning.result +++ b/mysql-test/main/partition_pruning.result @@ -3485,6 +3485,16 @@ a b c d 1 a b 1 drop table t1; # +# MDEV-14667 Assertion `used_parts > 0' failed in ha_partition::init_record_priority_queue. +# +create table t1 (a int); +insert into t1 values (1),(2); +create table t2 (b int, c int, key(c,b)) partition by hash(b) partitions 2; +insert into t2 values (3,4),(5,6); +select straight_join * from t1, t2 where b != NULL; +a b c +drop table t1, t2; +# # MDEV-17493: Partition pruning doesn't work for nested outer joins # create table t0(a int); diff --git a/mysql-test/main/partition_pruning.test b/mysql-test/main/partition_pruning.test index 1770f028f31..6b861621e0d 100644 --- a/mysql-test/main/partition_pruning.test +++ b/mysql-test/main/partition_pruning.test @@ -1537,6 +1537,19 @@ select * from t1 where (a = 1 AND b < 'd' AND (c = 'b' OR (c = 'c' AND d = 1)) O drop table t1; --echo # +--echo # MDEV-14667 Assertion `used_parts > 0' failed in ha_partition::init_record_priority_queue. +--echo # + +create table t1 (a int); +insert into t1 values (1),(2); + +create table t2 (b int, c int, key(c,b)) partition by hash(b) partitions 2; +insert into t2 values (3,4),(5,6); + +select straight_join * from t1, t2 where b != NULL; +drop table t1, t2; + +--echo # --echo # MDEV-17493: Partition pruning doesn't work for nested outer joins --echo # diff --git a/sql/ha_partition.cc b/sql/ha_partition.cc index 09664deb458..232111d5a98 100644 --- a/sql/ha_partition.cc +++ b/sql/ha_partition.cc @@ -5265,7 +5265,10 @@ bool ha_partition::init_record_priority_queue() { size_t alloc_len; uint used_parts= bitmap_bits_set(&m_part_info->read_partitions); - DBUG_ASSERT(used_parts > 0); + + if (used_parts == 0) /* Do nothing since no records expected. */ + DBUG_RETURN(false); + /* Allocate record buffer for each used partition. */ m_priority_queue_rec_len= m_rec_length + PARTITION_BYTES_IN_POS; if (!m_using_extended_keys) |