summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMartin Hansson <martin.hansson@sun.com>2010-05-10 09:23:23 +0200
committerMartin Hansson <martin.hansson@sun.com>2010-05-10 09:23:23 +0200
commit6d0425b18df7468036a1bbf6d781d624a28e2fb3 (patch)
tree0be844b85d1c0561f003ae224114fe675ca35a3b /tests
parent6170e64f674e84a074020496c8bb3ac6516e71ae (diff)
downloadmariadb-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