diff options
author | Martin Hansson <martin.hansson@sun.com> | 2010-05-10 09:23:23 +0200 |
---|---|---|
committer | Martin Hansson <martin.hansson@sun.com> | 2010-05-10 09:23:23 +0200 |
commit | 6d0425b18df7468036a1bbf6d781d624a28e2fb3 (patch) | |
tree | 0be844b85d1c0561f003ae224114fe675ca35a3b /tests | |
parent | 6170e64f674e84a074020496c8bb3ac6516e71ae (diff) | |
download | mariadb-git-6d0425b18df7468036a1bbf6d781d624a28e2fb3.tar.gz |
Bug#50939: Loose Index Scan unduly relies on engine to
remember range endpoints
The Loose Index Scan optimization keeps track of a sequence
of intervals. For the current interval it maintains the
current interval's endpoints. But the maximum endpoint was
not stored in the SQL layer; rather, it relied on the
storage engine to retain this value in-between reads. By
coincidence this holds for MyISAM and InnoDB. Not for the
partitioning engine, however.
Fixed by making the key values iterator
(QUICK_RANGE_SELECT) keep track of the current maximum endpoint.
This is also more efficient as we save a call through the
handler API in case of open-ended intervals.
The code to calculate endpoints was extracted into
separate methods in QUICK_RANGE_SELECT, and it was possible to
get rid of some code duplication as part of fix.
Diffstat (limited to 'tests')
0 files changed, 0 insertions, 0 deletions