← Back to team overview

maria-developers team mailing list archive

Re: Live Schema Changes

 

I have spent some of my spare time looking into this. It turns out
that MySQL Cluster already has this ability. They have the following
handler functions listed below. I spent a weekend trying to port MySQL
Cluster's alter table function (mysql_alter_table) over to 5.1.46.

The port that I did was straightforward, and for the most part, it
works. There are a couple of small bugs/issues that I need to
investigate and track down, but the functionality is available. If
this can be made to work in a safe way, where storage engines can
choose whether to use MySQL Cluster's new alter table, and others use
the existing, it seems like a very safe thing to integrate into 5.1.

One problem I have run into is that I do not know how to get a storage
engine to opt in. This was the motivation behind the following email
to the MySQL internals alias. http://lists.mysql.com/internals/38105

For those curious, the issues that I have:
 - alter table on partitioned tables is returning ER_OUTOFMEMORY (This
may only be when adding/dropping indexes)
 - All storage engines use the new alter table, I want storage engines
to opt in, to reduce the risk of bugs

Any thoughts?
-Zardosht

 virtual int check_if_supported_alter(TABLE *altered_table,
                                      HA_CREATE_INFO *create_info,
                                      HA_ALTER_FLAGS *alter_flags,
                                      uint table_changes)
 virtual int alter_table_phase1(THD *thd,
                                TABLE *altered_table,
                                HA_CREATE_INFO *create_info,
                                HA_ALTER_INFO *alter_info,
                                HA_ALTER_FLAGS *alter_flags)
 virtual int alter_table_phase2(THD *thd,
                                TABLE *altered_table,
                                HA_CREATE_INFO *create_info,
                                HA_ALTER_INFO *alter_info,
                                HA_ALTER_FLAGS *alter_flags)
 virtual int alter_table_phase3(THD *thd, TABLE *table)


On Wed, Sep 22, 2010 at 2:28 PM, MARK CALLAGHAN <mdcallag@xxxxxxxxx> wrote:
> It would be even cooler if there were storage engines that could do
> this internally. That would be easier to manage. The current process
> requires that you validate that your version of MariaDB or MySQL does
> the right thing for the tool.
>
> Note that the tool does a few steps differently for 5.0 versus 5.1
> because behavior has changed.
>
> On Tue, Sep 21, 2010 at 7:41 PM, Adam M. Dutko <dutko.adam@xxxxxxxxx> wrote:
>> I'm sure you have all
>> read http://bazaar.launchpad.net/~mysqlatfacebook/mysqlatfacebook/tools/annotate/head:/osc/OnlineSchemaChange.php already,
>> but if you haven't, it might be neat to look at evaluating and possibly
>> integrating it into MariaDB.
>> _______________________________________________
>> Mailing list: https://launchpad.net/~maria-developers
>> Post to     : maria-developers@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~maria-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>
>
>
> --
> Mark Callaghan
> mdcallag@xxxxxxxxx
>
> _______________________________________________
> Mailing list: https://launchpad.net/~maria-developers
> Post to     : maria-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~maria-developers
> More help   : https://help.launchpad.net/ListHelp
>



Follow ups

References