From: Mattias Jonsson Date: July 8 2010 12:37pm Subject: bzr commit into mysql-5.1-bugteam branch (mattias.jonsson:3469) Bug#46086 List-Archive: http://lists.mysql.com/commits/113123 X-Bug: 46086 Message-Id: <201007081237.o685olRp029843@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============6146592850841641736==" --===============6146592850841641736== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/mattiasj/mysql-bzr/b46086-51-bt/ based on revid:georgi.kodinov@stripped 3469 Mattias Jonsson 2010-07-08 Bug#46086: crash when dropping a partitioned table and the original engine is disabled Missing check that engine is available. @ mysql-test/include/not_blackhole.inc new include file @ mysql-test/r/partition_not_blackhole.result new result file @ mysql-test/std_data/parts/t1_blackhole.frm blackhole partitioned table .frm file: create table `t1` (`id` int primary key) engine=blackhole partition by key () partitions 1; @ mysql-test/std_data/parts/t1_blackhole.par .par file matching blackhole partitioned .frm @ mysql-test/t/partition_not_blackhole-master.opt new master-opt to disable blackhole if compiled in. @ mysql-test/t/partition_not_blackhole.test New test @ sql/ha_partition.cc Added check that engine is available. added: mysql-test/include/not_blackhole.inc mysql-test/r/partition_not_blackhole.result mysql-test/std_data/parts/t1_blackhole.frm mysql-test/std_data/parts/t1_blackhole.par mysql-test/t/partition_not_blackhole-master.opt mysql-test/t/partition_not_blackhole.test modified: sql/ha_partition.cc === added file 'mysql-test/include/not_blackhole.inc' --- a/mysql-test/include/not_blackhole.inc 1970-01-01 00:00:00 +0000 +++ b/mysql-test/include/not_blackhole.inc 2010-07-08 12:36:55 +0000 @@ -0,0 +1,5 @@ +if (`SELECT count(*) FROM information_schema.engines WHERE + (support = 'YES' OR support = 'DEFAULT') AND + engine = 'blackhole'`){ + skip Blackhole engine enabled; +} === added file 'mysql-test/r/partition_not_blackhole.result' --- a/mysql-test/r/partition_not_blackhole.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/r/partition_not_blackhole.result 2010-07-08 12:36:55 +0000 @@ -0,0 +1,16 @@ +DROP TABLE IF EXISTS t1; +# +# Bug#46086: crash when dropping a partitioned table and +# the original engine is disabled +# Copy a .frm and .par file which was created with: +# create table `t1` (`id` int primary key) engine=blackhole +# partition by key () partitions 1; +SHOW TABLES; +Tables_in_test +t1 +SHOW CREATE TABLE t1; +ERROR HY000: Incorrect information in file: './test/t1.frm' +DROP TABLE t1; +ERROR 42S02: Unknown table 't1' +t1.frm +t1.par === added file 'mysql-test/std_data/parts/t1_blackhole.frm' Binary files a/mysql-test/std_data/parts/t1_blackhole.frm 1970-01-01 00:00:00 +0000 and b/mysql-test/std_data/parts/t1_blackhole.frm 2010-07-08 12:36:55 +0000 differ === added file 'mysql-test/std_data/parts/t1_blackhole.par' Binary files a/mysql-test/std_data/parts/t1_blackhole.par 1970-01-01 00:00:00 +0000 and b/mysql-test/std_data/parts/t1_blackhole.par 2010-07-08 12:36:55 +0000 differ === added file 'mysql-test/t/partition_not_blackhole-master.opt' --- a/mysql-test/t/partition_not_blackhole-master.opt 1970-01-01 00:00:00 +0000 +++ b/mysql-test/t/partition_not_blackhole-master.opt 2010-07-08 12:36:55 +0000 @@ -0,0 +1 @@ +--loose-skip-blackhole === added file 'mysql-test/t/partition_not_blackhole.test' --- a/mysql-test/t/partition_not_blackhole.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/t/partition_not_blackhole.test 2010-07-08 12:36:55 +0000 @@ -0,0 +1,25 @@ +--source include/have_partition.inc +--source include/not_blackhole.inc + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +let $MYSQLD_DATADIR= `SELECT @@datadir`; + +--echo # +--echo # Bug#46086: crash when dropping a partitioned table and +--echo # the original engine is disabled +--echo # Copy a .frm and .par file which was created with: +--echo # create table `t1` (`id` int primary key) engine=blackhole +--echo # partition by key () partitions 1; +--copy_file std_data/parts/t1_blackhole.frm $MYSQLD_DATADIR/test/t1.frm +--copy_file std_data/parts/t1_blackhole.par $MYSQLD_DATADIR/test/t1.par +SHOW TABLES; +--error ER_NOT_FORM_FILE +SHOW CREATE TABLE t1; +--error ER_BAD_TABLE_ERROR +DROP TABLE t1; +--list_files $MYSQLD_DATADIR/test t1* +--remove_file $MYSQLD_DATADIR/test/t1.frm +--remove_file $MYSQLD_DATADIR/test/t1.par === modified file 'sql/ha_partition.cc' --- a/sql/ha_partition.cc 2010-05-25 13:41:00 +0000 +++ b/sql/ha_partition.cc 2010-07-08 12:36:55 +0000 @@ -2403,9 +2403,14 @@ bool ha_partition::get_from_handler_file tot_partition_words= (m_tot_parts + 3) / 4; engine_array= (handlerton **) my_alloca(m_tot_parts * sizeof(handlerton*)); for (i= 0; i < m_tot_parts; i++) + { engine_array[i]= ha_resolve_by_legacy_type(ha_thd(), (enum legacy_db_type) - *(uchar *) ((file_buffer) + 12 + i)); + *(uchar *) ((file_buffer) + + 12 + i)); + if (!engine_array[i]) + goto err3; + } address_tot_name_len= file_buffer + 12 + 4 * tot_partition_words; tot_name_words= (uint4korr(address_tot_name_len) + 3) / 4; if (len_words != (tot_partition_words + tot_name_words + 4)) --===============6146592850841641736== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/mattias.jonsson@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: mattias.jonsson@stripped\ # 3aasqrvm7v4m55yr # target_branch: file:///Users/mattiasj/mysql-bzr/b46086-51-bt/ # testament_sha1: 24c4929c98480c3ff58ccaa1dd5ff92eff068b41 # timestamp: 2010-07-08 14:37:05 +0200 # base_revision_id: georgi.kodinov@stripped\ # mw40lim5prbn2z1g # # Begin bundle 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 uX39tnN5NyADejom0/8XckU4UJA2I4pm --===============6146592850841641736==--