From: Mattias Jonsson Date: December 6 2010 4:33pm Subject: bzr commit into mysql-5.1-bugteam branch (mattias.jonsson:3512) Bug#58061 List-Archive: http://lists.mysql.com/commits/126141 X-Bug: 58061 Message-Id: <201012061633.oB6GXrUh015881@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============4418907742397947518==" --===============4418907742397947518== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/mattiasj/mysql-bzr/b58061-51-bt/ based on revid:mats.kindahl@stripped 3512 Mattias Jonsson 2010-12-06 Bug#58061: crash with group_concat + too small myisam_data_pointer_size + partition Problem was bad error handling withing the information_schema/show code resulting in a crash Even if an internal fatal error had occured (the temporary result table was full), it tried to continue which later crashed the server. Fixed by checking for the fatal error and break and not resetting the error when it occured. @ mysql-test/r/partition_i_s.result New result file @ mysql-test/t/partition_i_s.test New test file @ sql/sql_show.cc Do not ignore a fatal error or continue if it occurs. added: mysql-test/r/partition_i_s.result mysql-test/t/partition_i_s.test modified: sql/sql_show.cc === added file 'mysql-test/r/partition_i_s.result' --- a/mysql-test/r/partition_i_s.result 1970-01-01 00:00:00 +0000 +++ b/mysql-test/r/partition_i_s.result 2010-12-06 16:33:25 +0000 @@ -0,0 +1,36 @@ +drop table if exists t1; +call mtr.add_suppression("The table '.*' is full"); +SET @old_myisam_data_pointer_size= @@myisam_data_pointer_size; +SET global myisam_data_pointer_size=2; +CREATE TABLE t1 +(aaaaaaaaaaaaaaaaa INT, +bbbbbbbbbbbbnnnbbbb INT, +caaaaaaaaaaaaaaaa INT, +bbbbbbbbbbbjbbbbbbb INT, +daaaaaaaaaaaaaaaa INT, +bbbbbdbbbbbybbbbbbb INT, +eaaaaaaaaaaaaaaaa INT, +bbbbbbbbbhhbbbbbbbb INT, +ddaaaaaaaaaaaaaaa INT, +bbbbbbbbbgbbbbbbbbb INT, +afaaaaaaaaaaaaaaa INT, +bbbbbbbbbfbbbbbbbbb INT, +aagaaaaaaaaaaaaaa INT, +bbbbbbbbbcbbbbbbbbb INT, +aaahaaaaaaaaaaaaa INT, +bbbbbbbbbdbbbbbbbbb INT, +aaaajaaaaaaaaaaaa INT, +bbbbbbbbbbabbbbbbbb INT, +aaaaakaaaaaaaaaaa INT, +bbbbbbbbbbbpbbbbbbb INT, +aaaaaalaaaaaaaaaa INT, +bbbbbbbbbbbobbbbbbb INT PRIMARY KEY) +ENGINE = MyISAM +PARTITION BY KEY() PARTITIONS 1; +SELECT `table_schema`,1 as `nest_level`,'myisam' AS `engine`,`table_name`, +group_concat(`column_name` order by `column_name`) AS `cols` FROM +INFORMATION_SCHEMA.`COLUMNS` +WHERE `table_name`='t1' GROUP BY `table_schema`,`table_name` ; +ERROR HY000: The table '' is full +DROP TABLE t1; +SET @@global.myisam_data_pointer_size= @old_myisam_data_pointer_size; === added file 'mysql-test/t/partition_i_s.test' --- a/mysql-test/t/partition_i_s.test 1970-01-01 00:00:00 +0000 +++ b/mysql-test/t/partition_i_s.test 2010-12-06 16:33:25 +0000 @@ -0,0 +1,45 @@ +--source include/have_partition.inc + +--disable_warnings +drop table if exists t1; +--enable_warnings + + +call mtr.add_suppression("The table '.*' is full"); +SET @old_myisam_data_pointer_size= @@myisam_data_pointer_size; +SET global myisam_data_pointer_size=2; + +CREATE TABLE t1 +(aaaaaaaaaaaaaaaaa INT, + bbbbbbbbbbbbnnnbbbb INT, + caaaaaaaaaaaaaaaa INT, + bbbbbbbbbbbjbbbbbbb INT, + daaaaaaaaaaaaaaaa INT, + bbbbbdbbbbbybbbbbbb INT, + eaaaaaaaaaaaaaaaa INT, + bbbbbbbbbhhbbbbbbbb INT, + ddaaaaaaaaaaaaaaa INT, + bbbbbbbbbgbbbbbbbbb INT, + afaaaaaaaaaaaaaaa INT, + bbbbbbbbbfbbbbbbbbb INT, + aagaaaaaaaaaaaaaa INT, + bbbbbbbbbcbbbbbbbbb INT, + aaahaaaaaaaaaaaaa INT, + bbbbbbbbbdbbbbbbbbb INT, + aaaajaaaaaaaaaaaa INT, + bbbbbbbbbbabbbbbbbb INT, + aaaaakaaaaaaaaaaa INT, + bbbbbbbbbbbpbbbbbbb INT, + aaaaaalaaaaaaaaaa INT, + bbbbbbbbbbbobbbbbbb INT PRIMARY KEY) +ENGINE = MyISAM +PARTITION BY KEY() PARTITIONS 1; + +--replace_regex /table '.*' is full/table '' is full/ +--error ER_RECORD_FILE_FULL +SELECT `table_schema`,1 as `nest_level`,'myisam' AS `engine`,`table_name`, +group_concat(`column_name` order by `column_name`) AS `cols` FROM +INFORMATION_SCHEMA.`COLUMNS` +WHERE `table_name`='t1' GROUP BY `table_schema`,`table_name` ; +DROP TABLE t1; +SET @@global.myisam_data_pointer_size= @old_myisam_data_pointer_size; === modified file 'sql/sql_show.cc' --- a/sql/sql_show.cc 2010-11-30 17:51:25 +0000 +++ b/sql/sql_show.cc 2010-12-06 16:33:25 +0000 @@ -3271,7 +3271,8 @@ err1: err: pthread_mutex_unlock(&LOCK_open); - thd->clear_error(); + if (!thd->is_fatal_error) + thd->clear_error(); return res; } @@ -3458,6 +3459,11 @@ int get_all_tables(THD *thd, TABLE_LIST if (!fill_schema_table_from_frm(thd, table, schema_table, db_name, table_name, schema_table_idx)) continue; + if (thd->is_fatal_error) + { + error= 1; + goto err; + } } int res; --===============4418907742397947518== 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\ # 8bp0hhgwli7bm7t6 # target_branch: file:///Users/mattiasj/mysql-bzr/b58061-51-bt/ # testament_sha1: 0d3ad8b0a012cb461fa1e16c002f5cc7f2cdfef0 # timestamp: 2010-12-06 17:33:45 +0100 # base_revision_id: mats.kindahl@stripped\ # 7udci9op4lc6jvtb # # Begin bundle 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 58usv8XckU4UJD6t28rA --===============4418907742397947518==--