List:Internals« Previous MessageNext Message »
From:Sergei Golubchik Date:June 23 2011 4:08pm
Subject:Re: Temporarily preventing index from being selected
View as plain text  
Hi, Olivier!

On Jun 23, Olivier Chédru wrote:
> Hi Yves,
> 
> You are right, if I return ((ha_rows)~0 - 1) the index is not selected.
> However, is there any guarantee this will be always the case?

There's no guarantee, and furthermore, MySQL doesn't always call
records_in_range() before using an index.

The correct approach is to mask this key out in the
TABLE_SHARE::keys_in_use bitmap.

Regards,
Sergei

> -----Original Message-----
> From: Yves Trudeau [mailto:y.trudeau@stripped] 
> Sent: Thursday, June 23, 2011 2:25 PM
> To: Olivier Chédru
> Cc: internals@stripped
> Subject: Re: Temporarily preventing index from being selected
> 
> Hi Olivier,
>   Have you tried returning a very large number.  That would hint not to
> use the index.
> 
> On Thu, 2011-06-23 at 12:03 +0200, Olivier Chédru wrote:
> > Hi!
> > 
> > I am developing a storage engine for MySQL 5.5. My storage engine is
> > able to perform online index alterations.
> > 
> > I would like to prevent MySQL from choosing an index currently being
> > added by the storage engine.
> > 
> > To do so, my handler::records_in_range() method returns HA_POS_ERROR.
> > However this does not work: the index is used by the query anyway.
> > 
> > Any idea about how to achieve that?
> > 
Thread
Temporarily preventing index from being selectedOlivier Chédru23 Jun
  • Re: Temporarily preventing index from being selectedYves Trudeau23 Jun
    • RE: Temporarily preventing index from being selectedOlivier Chédru23 Jun
      • Re: Temporarily preventing index from being selectedSergei Golubchik23 Jun
        • RE: Temporarily preventing index from being selectedOlivier Chédru23 Jun
          • Re: Temporarily preventing index from being selectedSergei Golubchik23 Jun