This patch https://github.com/mariadb/server/commit/8eeb689e9fc57afe19a8dbff354b5f9f167867a9
has added MRR support to partitioning engine. If the partitions ' table engine supports MRR, the ha_partition engine will also support it.
The patch was targeting only the Spider engine, but actually it enabled MRR for partitioned DS-MRR engines (InnoDB,MyISAM and Aria). MRR support in MyRocks is not in MariaDB yet, but it in the upstream MyRocks so we will get in the next merge.
MDEV-20611 fixes the basic issues with partitioned DS-MRR. It would be nice to have more test coverage.
The test should have:
- A partitioned table that supports [DS-]MRR. Nice to try different partitioning schemes.
- The table must have an index.
- The query must use MRR or BKA+MRR to read the data from the partitioned table.
- AFAIU, there are two different cases:
- The lookup tuples do not cover all partitioning fields. In this case, for each lookup tuple, ha_partition needs to search for it in all partitions (well, in all partitions that were left after partition pruning)
- The lookup tuples cover partitioned fields. In this case, ha_partition will split the list of ranges into sub-lists that cover individual partitions.
Things to cover:
- non-trivial pushed Index Condition
- Not-exists optimization (Use LEFT JOIN with WHERE inner_table.not_null_col IS NULL
- BKAH (hashed BKA).