← Back to team overview

maria-developers team mailing list archive

Re: Likely a dead optimizer related code

 

Hi Igor,

Just a gentle reminder.

Thanks.

On 06/10/2015 04:59 PM, Alexander Barkov wrote:
Hi Igor,

I noticed that during Item_cond::fix_fields() and
Item_func_between::fix_fields() update these optimizer
related SELECT_LEX members:

thd->lex->current_select->cond_count and
thd->lex->current_select->between_count

The purpose of these members is to allocate optimizer related buffers
in:
- update_ref_and_keys() in sql_select.cc and
- check_func_dependency() in opt_table_elimination,cc
and it seems they have no any other purposes..


 From my understanding, this is a dead code and the collected values are
never used:

- cond_count and_between_count are later always initialized to 0
before the walk(count_sargable_conds) call in update_ref_and_keys().


- moreover, using the values collected during fix_fields() would not be
correct to allocate optimized related buffers, because the code
in fix_fields() does not distinguish between different query parts,
so the items can be just a part of the SELECT list rather than a
part of WHERE/HAVING/ON.


Is the attached patch correct? All tests pass.


Thanks.


References