From: Mattias Jonsson Date: September 30 2010 1:31pm Subject: bzr commit into mysql-5.1-bugteam branch (mattias.jonsson:3482) Bug#55458 Bug#57113 List-Archive: http://lists.mysql.com/commits/119542 X-Bug: 55458,57113 Message-Id: <201009301333.o8UBnHwF021841@rcsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1179047794592293524==" --===============1179047794592293524== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///Users/mattiasj/mysql-bzr/b55458-51-bt/ based on revid:mattias.jonsson@stripped 3482 Mattias Jonsson 2010-09-30 Bug#55458: Partitioned MyISAM table gets crashed by multi-table update Bug#57113: ha_partition::extra(ha_extra_function): Assertion `m_extra_cache' failed Fix for bug#55458 included DBUG_ASSERTS causing debug builds of the server to crash on another multi-table update. Removed the asserts since they where wrong. @ mysql-test/r/partition.result updated result @ mysql-test/t/partition.test Added test for bug#57113 @ sql/ha_partition.cc Removed the assert for m_extra_cache when ::extra(HA_PREPARE_FOR_UPDATE) was called. modified: mysql-test/r/partition.result mysql-test/t/partition.test sql/ha_partition.cc === modified file 'mysql-test/r/partition.result' --- a/mysql-test/r/partition.result 2010-08-10 08:43:12 +0000 +++ b/mysql-test/r/partition.result 2010-09-30 13:30:53 +0000 @@ -1,5 +1,20 @@ drop table if exists t1, t2; # +# Bug#57113: ha_partition::extra(ha_extra_function): +# Assertion `m_extra_cache' failed +CREATE TABLE t1 +(id INT NOT NULL PRIMARY KEY, +name VARCHAR(16) NOT NULL, +year YEAR, +INDEX name (name(8)) +) +PARTITION BY HASH(id) PARTITIONS 2; +INSERT INTO t1 VALUES ( 1, 'FooBar', '1924' ); +CREATE TABLE t2 (id INT); +INSERT INTO t2 VALUES (1),(2); +UPDATE t1, t2 SET t1.year = '1955' WHERE t1.name = 'FooBar'; +DROP TABLE t1, t2; +# # Bug#55458: Partitioned MyISAM table gets crashed by multi-table update # CREATE TABLE t1 ( === modified file 'mysql-test/t/partition.test' --- a/mysql-test/t/partition.test 2010-08-10 08:43:12 +0000 +++ b/mysql-test/t/partition.test 2010-09-30 13:30:53 +0000 @@ -15,6 +15,28 @@ drop table if exists t1, t2; --enable_warnings --echo # +--echo # Bug#57113: ha_partition::extra(ha_extra_function): +--echo # Assertion `m_extra_cache' failed +CREATE TABLE t1 +(id INT NOT NULL PRIMARY KEY, + name VARCHAR(16) NOT NULL, + year YEAR, + INDEX name (name(8)) +) +PARTITION BY HASH(id) PARTITIONS 2; + +INSERT INTO t1 VALUES ( 1, 'FooBar', '1924' ); + +CREATE TABLE t2 (id INT); + +INSERT INTO t2 VALUES (1),(2); + +UPDATE t1, t2 SET t1.year = '1955' WHERE t1.name = 'FooBar'; + +DROP TABLE t1, t2; + + +--echo # --echo # Bug#55458: Partitioned MyISAM table gets crashed by multi-table update --echo # CREATE TABLE t1 ( === modified file 'sql/ha_partition.cc' --- a/sql/ha_partition.cc 2010-09-07 15:56:43 +0000 +++ b/sql/ha_partition.cc 2010-09-30 13:30:53 +0000 @@ -5550,7 +5550,6 @@ int ha_partition::extra(enum ha_extra_fu DBUG_RETURN(prepare_for_rename()); break; case HA_EXTRA_PREPARE_FOR_UPDATE: - DBUG_ASSERT(m_extra_cache); /* Needs to be run on the first partition in the range now, and later in late_extra_cache, when switching to a new partition to scan. @@ -5820,19 +5819,22 @@ void ha_partition::late_extra_cache(uint { handler *file; DBUG_ENTER("ha_partition::late_extra_cache"); - DBUG_PRINT("info", ("extra_cache %u partid %u size %u", m_extra_cache, + DBUG_PRINT("info", ("extra_cache %u prepare %u partid %u size %u", + m_extra_cache, m_extra_prepare_for_update, partition_id, m_extra_cache_size)); if (!m_extra_cache && !m_extra_prepare_for_update) DBUG_VOID_RETURN; file= m_file[partition_id]; - if (m_extra_cache_size == 0) - VOID(file->extra(HA_EXTRA_CACHE)); - else - VOID(file->extra_opt(HA_EXTRA_CACHE, m_extra_cache_size)); + if (m_extra_cache) + { + if (m_extra_cache_size == 0) + VOID(file->extra(HA_EXTRA_CACHE)); + else + VOID(file->extra_opt(HA_EXTRA_CACHE, m_extra_cache_size)); + } if (m_extra_prepare_for_update) { - DBUG_ASSERT(m_extra_cache); VOID(file->extra(HA_EXTRA_PREPARE_FOR_UPDATE)); } m_extra_cache_part_id= partition_id; --===============1179047794592293524== 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\ # 6qxj7wlsmed2hc39 # target_branch: file:///Users/mattiasj/mysql-bzr/b55458-51-bt/ # testament_sha1: bf4101f81ba00195194c02745b0b8cb6a9bd7147 # timestamp: 2010-09-30 15:31:11 +0200 # base_revision_id: mattias.jonsson@stripped\ # lex6mcfwm40w0j0h # # Begin bundle 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 --===============1179047794592293524==--