List:Commits« Previous MessageNext Message »
From:Alexander Barkov Date:December 29 2010 10:14am
Subject:Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)
Bug#58165
View as plain text  
Hi Sergey, Martin,

Sergey Glukhov wrote:
> Hi Martin,
> 
> On 12/28/2010 11:33 AM, Martin Hansson wrote:
>> Hi Sergey,
>>
>> Sergey Glukhov skrev 2010-12-23 12.44:
>>> Hi Martin, see comments below
>>>
>>> On 12/22/2010 03:30 PM, Martin Hansson wrote:
>>>> #At file:///data0/martin/bzrroot/bug58165/5.1bt-lazy_copy/ based on 
>>>> revid:sergey.glukhov@stripped
>>>>
>>>>
>>>>      modified:
>>>>        mysql-test/r/func_str.result
>>>>        mysql-test/t/func_str.test
>>>>        sql/item_strfunc.cc
>>>>        sql/sql_string.cc
>>> ...
>>>> === modified file 'sql/item_strfunc.cc'
>>>> --- a/sql/item_strfunc.cc    2010-11-11 10:25:23 +0000
>>>> +++ b/sql/item_strfunc.cc    2010-12-22 12:30:13 +0000
>>>> @@ -1305,8 +1305,15 @@ String *Item_func_substr_index::val_str(
>>>>     null_value=0;
>>>>     uint delimiter_length= delimiter->length();
>>>>     if (!res->length() || !delimiter_length || !count)
>>>> -    return&my_empty_string;        // Wrong parameters
>>>> -
>>>> +  {
>>>> +    if (str->copy("", 0, default_charset_info))        // Wrong 
>>>> parameters
>>>> +    {
>>>> +      /* Out of memory */
>>>> +      null_value= true;
>>>> +      return NULL;
>>>> +    }
>>>> +    return str;
>>>> +  }
>>>>     res->set_charset(collation.collation);
>>>>
>>>>   #ifdef USE_MB
>>>>
>>>
>>> Using my_empty_string is not safe, the bug shows it.
>>> So we should remove my_empty_string from all places
>>> where it is used. 
>> Removing my_empty_string altogether is way too large to be done as an 
>> MRU bug fix (Believe me, I tried.) I suggest filing a separate report 
>> about it. Let's make this customer happy first and then we'll deal 
>> with the other problems we discovered while working on it.
> I was too optimistic with the request about removing my_empty_string
> from all places. As far as I can see problematic places are
> set_var.cc, sql_class.cc. However we could fix all places in
> item_strfunc.cc at least. it should be not a problem.
> It seems we should introduce new method, say
> 
> Item::empty_string()
> {
>   str_value.set("", 0, collation.collation);
>   return &str_value;
> }

Sergey, I like your idea about introducing this new method.
Please check if it can be moved to Item_str_func:

String *Item_str_func::empty_string()
{
   str_value.set("", 0, collation.collation);
   return &str_value;
}

Perhaps it could also be named "str_value_empty",
to accent that we're returning "str_value".

> 
> and replace &my_empty_string with empty_string().
> 

It should be safe to replace all &my_empty_string instances
to the new method calls in item_str_func.cc,
even under terms of a MRU bug. Looks like a fairly small change:
"grep my_empty_string item_strfunc.cc" reports about 22 lines.


Note, my_empty_string is a reminder from 4.0 times,
when we had a single global character set for the entire server.
my_empty_string should be eventually removed everywhere from the
sources. Fixing item_strfunc.cc looks like a good start.

> 
> PS Bar, I would like to know your opinion about this...
> 
> Regards,
> Gluh
> 

Thread
bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534) Bug#58165Martin Hansson28 Dec
Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Martin Hansson28 Dec
Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Alexander Barkov29 Dec
  • Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Martin Hansson29 Dec
    • Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Alexander Barkov29 Dec
      • Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Martin Hansson30 Dec
        • Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Alexander Barkov12 Jan
          • Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Martin Hansson12 Jan
            • Re: bzr commit into mysql-5.1-bugteam branch (martin.hansson:3534)Bug#58165Alexander Barkov14 Jan