← Back to team overview

maria-developers team mailing list archive

Re: Item_func_group_concat::fix_fields - indentation and check positioning?

 

Hi, Daniel!

On Mar 01, Daniel Black wrote:
> 
> I came across the following gcc warning (6.3.1)
> 
> 
> sql/item_sum.cc: In member function ‘virtual bool
> Item_func_group_concat::fix_fields(THD*, Item**)’:
> sql/item_sum.cc:3478:5: warning: this ‘if’ clause does not guard...
> [-Wmisleading-indentation]
>      if ((!args[i]->fixed &&
>      ^~
> sql/item_sum.cc:3482:7: note: ...this statement, but the latter is
> misleadingly indented as if it is guarded by the ‘if’
>        with_subselect|= args[i]->with_subselect;
> 
> The with_subselect line was added in 950abd526
> 
> In context it is:
> 
> Item_func_group_concat::fix_fields(THD *thd, Item **ref)
> {
> ...
>   for (i=0 ; i < arg_count ; i++)
>   {
>     if ((!args[i]->fixed &&
>          args[i]->fix_fields(thd, args + i)) ||
>         args[i]->check_cols(1))
>       return TRUE;
>       with_subselect|= args[i]->with_subselect;
>   }
> 
> While removing the indent would fix the warning, I'd like someone to
> check this line should be after the IF statement rather than before.

I've fixed the indentation (in 5.5). Returning TRUE means an error
anyway, the query processing is aborted. It shouldn't matter what
with_subselect is in that case.

Regards,
Sergei
Chief Architect MariaDB
and security@xxxxxxxxxxx


References