List:Commits« Previous MessageNext Message »
From:Tor Didriksen Date:December 16 2010 12:47pm
Subject:Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)
Bug#58918
View as plain text  
On Wed, Dec 15, 2010 at 1:38 PM, Martin Hansson
<martin.hansson@stripped>wrote:

> Tor Didriksen skrev 2010-12-15 12.42:
>
>  On Tue, Dec 14, 2010 at 1:50 PM, Martin Hansson
>> <martin.hansson@stripped>wrote:
>>
>>  #At file:///data0/martin/bzrroot/refactoring-Field_clone/n-mr-o-t/ based
>>> on
>>> revid:tor.didriksen@stripped
>>>
>>>  3260 Martin Hansson    2010-12-14
>>>      Bug#58918: Add a clone member function to the Field class for better
>>>      duplication
>>>
>>>      The patch removes all copying of Field objects using memcpy() and
>>> replaces it
>>>      with virtual clone() and clone(MEM_ROOT*) member functions that rely
>>> on the
>>>      copy constructor. An operator new (MEM_ROOT*) is also implemented.
>>> The
>>> sole
>>>      purpose of the Field::size_of() member function was to support the
>>> memcpy and
>>>      it is now removed.
>>>     @ sql/field.cc
>>>        Removal of memcpy() based duplication.
>>>     @ sql/field.h
>>>        New implementation of clone() member functions.
>>>        Removal of size_of() member functions
>>>     @ sql/item.cc
>>>        Removal of memcpy() based duplication.
>>> @@ -84,8 +79,12 @@ class Field
>>>   Field(const Item&);                         /* Prevent use of these */
>>>   void operator=(Field&);
>>>  public:
>>> +  /* To do: inherit Sql_alloc and get these for free */
>>>
>>>
>>>  Why not go all the way :-)
>> This works like a charm:
>>
>> class Field : public Sql_alloc
>> {
>>   Field(const Item&);                /* Prevent use of these */
>>   void operator=(Field&);
>> public:
>>   uchar        *ptr;            // Position to field in record
>> ...
>> ...
>>
> I am planning to. In case you didn't notice there's a comment about it. The
> reason I don't want to do it is because it would work by coincidence, not by
> design. The class Sql_alloc is -very wrongfully - defined in sql_list.h. We
> slip that include file in sideways by including mysqld.h which in turn
> includes sql_list.h. I plan as my next refactoring to create a file
> sql_alloc.h and then make every class that implements an identical 'new'
> operator (quite a few of those actually) inherit Sql_alloc instead. Only
> then will I have gone all the way :-)
>

Ah, OK, that makes sense.

-- didrik


>
> If you insist, of course I can do it!
>
> /Martin
>

Thread
bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260) Bug#58918Martin Hansson14 Dec
Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Tor Didriksen15 Dec
  • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Martin Hansson15 Dec
    • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Tor Didriksen16 Dec
    • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Øystein Grøvlen16 Dec
      • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Martin Hansson16 Dec
Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Tor Didriksen16 Dec
  • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Martin Hansson16 Dec
Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Øystein Grøvlen17 Dec
  • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Martin Hansson20 Dec
    • Re: bzr commit into mysql-trunk-bugfixing branch (martin.hansson:3260)Bug#58918Øystein Grøvlen20 Dec