From: Mattias Jonsson Date: May 2 2011 2:12pm Subject: bzr commit into mysql-5.1 branch (mattias.jonsson:3680) Bug#59976 Bug#11766780 List-Archive: http://lists.mysql.com/commits/136531 X-Bug: 59976,11766780 Message-Id: <201105021412.p42ECeX0031882@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0294409420==" --===============0294409420== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///C:/ade/mysql-bzr/b11766780-51/ based on revid:vasil.dimov@stripped 3680 Mattias Jonsson 2011-05-02 Bug#11766780 Bug#59976: TEMPORARY FILES REMAIN AFTER CHECK AND ADDING PARTITION The partition element state was not reset to PART_NORMAL after admin statements either it failed or not, resulting in extra files created and not cleaned up in following alter statements. Fixed by not using PART_CHANGED for admin state, but a new (from 5.5) PART_ADMIN instead. Also setting state to PART_NORMAL for unaffected partitions in set_part_state. modified: mysql-test/r/partition_myisam.result mysql-test/t/partition_myisam.test sql/ha_partition.cc sql/partition_element.h sql/sql_partition.cc sql/sql_table.cc === modified file 'mysql-test/r/partition_myisam.result' --- a/mysql-test/r/partition_myisam.result 2011-04-27 15:51:06 +0000 +++ b/mysql-test/r/partition_myisam.result 2011-05-02 14:12:27 +0000 @@ -1,4 +1,26 @@ DROP TABLE IF EXISTS t1, t2; +# +# Bug#11766780: Bug#59976: TEMPORARY FILES REMAIN AFTER CHECK AND +# ADDING PARTITION +# +CREATE TABLE t1 ( +a INT UNSIGNED NOT NULL, +b VARCHAR(50), +PRIMARY KEY (a, b) +) ENGINE = MyISAM +PARTITION BY RANGE(a) +(PARTITION p1 VALUES LESS THAN (10)); +ALTER TABLE t1 CHECK PARTITION p1; +Table Op Msg_type Msg_text +test.t1 check status OK +ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES LESS THAN (20)); +t1#P#p1.MYD +t1#P#p1.MYI +t1#P#p2.MYD +t1#P#p2.MYI +t1.frm +t1.par +DROP TABLE t1; # Bug#30102 test CREATE TABLE t1 (a INT) PARTITION BY RANGE (a) === modified file 'mysql-test/t/partition_myisam.test' --- a/mysql-test/t/partition_myisam.test 2011-04-27 15:51:06 +0000 +++ b/mysql-test/t/partition_myisam.test 2011-05-02 14:12:27 +0000 @@ -4,6 +4,23 @@ DROP TABLE IF EXISTS t1, t2; --enable_warnings let $MYSQLD_DATADIR= `SELECT @@datadir`; +--echo # +--echo # Bug#11766780: Bug#59976: TEMPORARY FILES REMAIN AFTER CHECK AND +--echo # ADDING PARTITION +--echo # +CREATE TABLE t1 ( + a INT UNSIGNED NOT NULL, + b VARCHAR(50), + PRIMARY KEY (a, b) +) ENGINE = MyISAM +PARTITION BY RANGE(a) +(PARTITION p1 VALUES LESS THAN (10)); + +ALTER TABLE t1 CHECK PARTITION p1; +ALTER TABLE t1 ADD PARTITION (PARTITION p2 VALUES LESS THAN (20)); +--list_files $MYSQLD_DATADIR/test t1* +DROP TABLE t1; + # # Bug#30102: rename table does corrupt tables with partition files on failure # === modified file 'sql/ha_partition.cc' --- a/sql/ha_partition.cc 2011-04-29 07:48:26 +0000 +++ b/sql/ha_partition.cc 2011-05-02 14:12:27 +0000 @@ -1104,7 +1104,7 @@ int ha_partition::handle_opt_partitions( it should only do named partitions, otherwise all partitions */ if (!(thd->lex->alter_info.flags & ALTER_ADMIN_PARTITION) || - part_elem->part_state == PART_CHANGED) + part_elem->part_state == PART_ADMIN) { if (m_is_sub_partitioned) { @@ -1136,8 +1136,15 @@ int ha_partition::handle_opt_partitions( "Subpartition %s returned error", sub_elem->partition_name); } + /* reset part_state for the remaining partitions */ + do + { + if (part_elem->part_state == PART_ADMIN) + part_elem->part_state= PART_NORMAL; + } while ((part_elem= part_it++)); DBUG_RETURN(error); } + part_elem->part_state= PART_NORMAL; } while (++j < no_subparts); } else @@ -1162,8 +1169,15 @@ int ha_partition::handle_opt_partitions( opt_op_name[flag], "Partition %s returned error", part_elem->partition_name); } + /* reset part_state for the remaining partitions */ + do + { + if (part_elem->part_state == PART_ADMIN) + part_elem->part_state= PART_NORMAL; + } while ((part_elem= part_it++)); DBUG_RETURN(error); } + part_elem->part_state= PART_NORMAL; } } } while (++i < no_parts); @@ -5895,7 +5909,7 @@ int ha_partition::extra(enum ha_extra_fu 0 Success DESCRIPTION - Called at end of each statement to reste buffers + Called at end of each statement to reset buffers */ int ha_partition::reset(void) === modified file 'sql/partition_element.h' --- a/sql/partition_element.h 2007-04-13 17:23:02 +0000 +++ b/sql/partition_element.h 2011-05-02 14:12:27 +0000 @@ -32,7 +32,8 @@ enum partition_state { PART_REORGED_DROPPED= 5, PART_CHANGED= 6, PART_IS_CHANGED= 7, - PART_IS_ADDED= 8 + PART_IS_ADDED= 8, + PART_ADMIN= 9 }; /* === modified file 'sql/sql_partition.cc' --- a/sql/sql_partition.cc 2011-02-22 21:03:32 +0000 +++ b/sql/sql_partition.cc 2011-05-02 14:12:27 +0000 @@ -4262,6 +4262,8 @@ uint set_part_state(Alter_info *alter_in DBUG_PRINT("info", ("Setting part_state to %u for partition %s", part_state, part_elem->partition_name)); } + else + part_elem->part_state= PART_NORMAL; } while (++part_count < tab_part_info->no_parts); return no_parts_found; } @@ -4392,8 +4394,8 @@ uint prep_alter_part_table(THD *thd, TAB *fast_alter_partition, flags)); if (((alter_info->flags & ALTER_ADD_PARTITION) || (alter_info->flags & ALTER_REORGANIZE_PARTITION)) && - (thd->work_part_info->part_type != tab_part_info->part_type) && - (thd->work_part_info->part_type != NOT_A_PARTITION)) + (thd->work_part_info->part_type != tab_part_info->part_type) && + (thd->work_part_info->part_type != NOT_A_PARTITION)) { if (thd->work_part_info->part_type == RANGE_PARTITION) { === modified file 'sql/sql_table.cc' --- a/sql/sql_table.cc 2010-11-10 08:32:42 +0000 +++ b/sql/sql_table.cc 2011-05-02 14:12:27 +0000 @@ -4628,7 +4628,7 @@ static bool mysql_admin_table(THD* thd, uint no_parts_found; uint no_parts_opt= alter_info->partition_names.elements; no_parts_found= set_part_state(alter_info, table->table->part_info, - PART_CHANGED); + PART_ADMIN); if (no_parts_found != no_parts_opt && (!(alter_info->flags & ALTER_ALL_PARTITION))) { --===============0294409420== 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\ # gessx7npq7j0ax77 # target_branch: file:///C:/ade/mysql-bzr/b11766780-51/ # testament_sha1: b27acae00a8d81cb9b93d67f68169f7ab6288e58 # timestamp: 2011-05-02 16:12:34 +0200 # base_revision_id: vasil.dimov@stripped\ # kysx9jaah5gmc0fj # # Begin bundle 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 4cYnI9v3Df7F3JFOFCQjreu1wA== --===============0294409420==--