From: Sergey Vojtovich Date: March 4 2011 9:06am Subject: Re: bzr commit into mysql-5.5 branch (magnus.blaudd:3353) Bug#60111 List-Archive: http://lists.mysql.com/commits/132434 Message-Id: <20110304090653.GB17751@june> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Hi Magnus, this addition looks fine. I have no preference regarding get_tablespace_name. Regards, Sergey On Fri, Mar 04, 2011 at 09:29:14AM +0100, Magnus Blåudd wrote: > On 03/02/2011 09:39 AM, Sergey Vojtovich wrote: > >>=== added file 'mysql-test/r/tablespace.result' > >>> --- a/mysql-test/r/tablespace.result 1970-01-01 00:00:00 +0000 > >>> +++ b/mysql-test/r/tablespace.result 2011-02-23 13:15:08 +0000 > >>> @@ -0,0 +1,112 @@ > >...skip... > >>> +CREATE TABLE t1(a int) TABLESPACE ts STORAGE DISK ENGINE=MyISAM; > >>> +ALTER TABLE t1 ADD COLUMN b int; > >>> +SHOW CREATE TABLE t1; > >>> +Table Create Table > >>> +t1 CREATE TABLE `t1` ( > >>> + `a` int(11) DEFAULT NULL, > >>> + `b` int(11) DEFAULT NULL > >>> +) /*!50100 TABLESPACE ts */ ENGINE=MyISAM DEFAULT CHARSET=latin1 > >>> +DROP TABLE t1; > >Why no STORAGE DISK? > > Hi Svoj, > > you uncovered a bug in 'prepare_alter_table', the TABLESPACE and > STORAGE was not copied to create_info properly. > > Below is the patch, which: > 1) removes the assumption that tablespace is only copied when > STORAGE == DISK > 2) copied the STORAGE from share to HA_CREATE_INFO if not specified > in ALTER. > > Once again removing one place using get_tablespace_name so it's not > only one left in 'store_schema_partitions_record' in sql_show.cc, do > you want me to get rid of it completely? > > > === modified file 'sql/sql_table.cc' > --- sql/sql_table.cc 2011-01-26 13:23:29 +0000 > +++ sql/sql_table.cc 2011-03-04 08:05:46 +0000 > @@ -5281,17 +5281,12 @@ mysql_prepare_alter_table(THD *thd, TABL > if (!(used_fields & HA_CREATE_USED_KEY_BLOCK_SIZE)) > create_info->key_block_size= table->s->key_block_size; > > - if (!create_info->tablespace && create_info->storage_media != > HA_SM_MEMORY) > - { > - char *tablespace= static_cast(thd->alloc(FN_LEN + 1)); > - /* > - Regular alter table of disk stored table (no > tablespace/storage change) > - Copy tablespace name > - */ > - if (tablespace && > - (table->file->get_tablespace_name(thd, tablespace, FN_LEN))) > - create_info->tablespace= tablespace; > - } > + if (!create_info->tablespace) > + create_info->tablespace= table->s->tablespace; > + > + if (create_info->storage_media == HA_SM_DEFAULT) > + create_info->storage_media= table->s->default_storage_media; > + > restore_record(table, s->default_values); // Empty record for > DEFAULT > Create_field *def; > > > / Magnus > > -- > MySQL Code Commits Mailing List > For list archives: http://lists.mysql.com/commits > To unsubscribe: http://lists.mysql.com/commits?unsub=svoj@stripped > -- Sergey Vojtovich MySQL AB, Software Engineer Izhevsk, Russia, www.mysql.com