1
0
mirror of https://github.com/MariaDB/server.git synced 2026-01-06 05:22:24 +03:00

MDEV-4778: Incorrect results from Aria/MyISAM SELECT using index with prefix length on TEXT column

Backport the fix olav.sandstaa@sun.com-20101102184747-qfuntqwj021imy9r:
"Fix for Bug#52660 Perf. regr. using ICP for MyISAM on range queries on an index containing TEXT" 
(together with further fixes in that code) into MyISAM and Aria.
This commit is contained in:
Sergey Petrunya
2013-07-16 10:56:42 +04:00
parent 9651a6f574
commit 47c1b04079
10 changed files with 180 additions and 14 deletions

View File

@@ -2637,7 +2637,33 @@ public:
Pops the top if condition stack, if stack is not empty.
*/
virtual void cond_pop() { return; };
/**
Push down an index condition to the handler.
The server will use this method to push down a condition it wants
the handler to evaluate when retrieving records using a specified
index. The pushed index condition will only refer to fields from
this handler that is contained in the index (but it may also refer
to fields in other handlers). Before the handler evaluates the
condition it must read the content of the index entry into the
record buffer.
The handler is free to decide if and how much of the condition it
will take responsibility for evaluating. Based on this evaluation
it should return the part of the condition it will not evaluate.
If it decides to evaluate the entire condition it should return
NULL. If it decides not to evaluate any part of the condition it
should return a pointer to the same condition as given as argument.
@param keyno the index number to evaluate the condition on
@param idx_cond the condition to be evaluated by the handler
@return The part of the pushed condition that the handler decides
not to evaluate
*/
virtual Item *idx_cond_push(uint keyno, Item* idx_cond) { return idx_cond; }
/** Reset information about pushed index conditions */
virtual void cancel_pushed_idx_cond()
{