From: Sergei Golubchik Date: June 23 2011 4:08pm Subject: Re: Temporarily preventing index from being selected List-Archive: http://lists.mysql.com/internals/38349 Message-Id: <20110623160802.GA5222@janus.mylan> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit 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? > >