← Back to team overview

maria-developers team mailing list archive

Re: implementing index condition pushdown in MariaDB 5.5


Hi Zardosht,

On Thu, Feb 14, 2013 at 11:31:13AM -0500, Zardosht Kasheff wrote:
> Thanks for the feedback. What makes this feature a little difficult
> for me to grasp is the requirement that the engine is responsible for
> doing some of the condition checking, and that MySQL is doing none of
> the checking.
> Here are the handler cursor API functions:
> index_first
> index_last
> index_next
> index_prev
> index_next_same
> index_read
> If we return NULL for idx_cond_push, meaning we will do all of the
> condition checking, does that mean ALL of these functions need to
> check the condition before returning something to MySQL? Or just a
> subset?
Actually, a subset. All of the functions that do forward scans must do 
the checking. 

ICP will not be used with functions that do reverse scans: index_last,

> Also, suppose we always return the full condition to MySQL, meaning
> the engine is responsible for none of the condition checking, but then
> the engine does condition checking anyway. Is that ok? Here is an
> example of what I mean. Suppose we have a key (a,b), and a query of
> select * from table where a between 5 and 10 and b=5; Would it be ok
> for our engine to return the full condition to MySQL, but then in
> subsequent calls to index_next and index_prev, choose to not return
> rows where b != 5?

I think it should be ok. Nothing comes to mind which could make it a problem.

Sergei Petrunia, Software Developer
Monty Program AB, http://askmonty.org
Blog: http://s.petrunia.net/blog