← Back to team overview

maria-developers team mailing list archive

Re: Need help merging MDEV-7387 from 10.0 to 10.1

 

Hi Kristian, Daniel,

I just pushed a merge patch into 10.1.


On 04/20/2015 11:28 AM, Alexander Barkov wrote:
Hi Daniel,



On 04/18/2015 08:30 AM, Daniel Black wrote:


----- Original Message -----
Hi Bar,

Can you please merge the following patch 10.0 -> 10.1?

     commit bc902a2bfc46add0708896c07621e3707f66d95f
     Author: Alexander Barkov <bar@xxxxxxxxxxx>
     Date:   Fri Mar 13 16:12:54 2015 +0400

    MDEV-7387 [PATCH] Alter table xxx CHARACTER SET utf8, CONVERT TO
CHARACTER
    SET latin1 should fail

Eg. run `git merge bc902a2bfc46add0708896c07621e3707f66d95f` in a
10.1 tree.

Single merge:

https://github.com/MariaDB/server/pull/43




Thanks for your help! We appreciate your contributions very much.

The idea of your merge patch is absolutely correct:
to have "default_table_charset" and "used_fields" in the same structure.

However, I think I'll resolve this merge conflict in a slightly
different way.

Instead of moving "used_fields" into Schema_specification_st,
I'll just put move the new methods into HA_CREATE_INFO.

Let me explain why:

In 10.1 we split HA_CREATE_INFO into two parts:

- Schema_specification_st
- Table_scope_and_contents_source_st

The reasons to do this were:

- To avoid passing unnecessary information into functions and methods
- To save on the involved structures initialization
- To remove some duplicate code

mysql_create_db() and mysql_alter_db() need only the
Schema_specification_st part,
while the entire HA_CREATE_INFO was passed in 10.0 and earlier into
these functions.

Before being passed to the above functions, HA_CREATE_INFO was initialized
with bzero(). sizeof(HA_CREATE_INFO) is 304 bytes, while
sizeof(Schema_specification_st)
is only 8 bytes at the moment. So most of initialization was not really
necessary.

I don't want to move "used_fields" from Table_scope_and_contents_source_st
to Schema_specification_st for exactly the same reason:
because mysql_create_db() and mysql_alter_db() don't need it.

So let's keep "used_fields" in Table_scope_and_contents_source_st, and
just move the new methods to the HA_CREATE_INFO level, which has
access to both "used_fields" and "default_table_charset".

I'll push a patch in a few minutes hopefully.
Running tests at the moment.



References