From: Mattias Jonsson Date: March 31 2011 8:14am Subject: bzr commit into mysql-5.1 branch (mattias.jonsson:3642) Bug#60681 Bug#11933226 List-Archive: http://lists.mysql.com/commits/134338 X-Bug: 60681,11933226 Message-Id: <201103310814.p2V8EFUt013325@acsmt357.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1633930842==" --===============1633930842== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///C:/ade/mysql-bzr/b11933226-51/ based on revid:jon.hauglid@stripped 3642 Mattias Jonsson 2011-03-31 BUG#11933226 - Bug#60681: CHECKSUM TABLE RETURNS 0 FOR PARTITIONED TABLE ha_partition::checksum() was not implemented, but HA_HAS_CHECKSUM table flag was returned if the underlying handlers supported it, resulting in CHECKSUM TABLE returned 0 when checksum was enabled. Fixed by implementing ha_partition::checksum() by adding all partitions checksums together. modified: mysql-test/r/partition.result mysql-test/t/partition.test sql/ha_partition.cc sql/ha_partition.h === modified file 'mysql-test/r/partition.result' --- a/mysql-test/r/partition.result 2011-03-09 17:12:23 +0000 +++ b/mysql-test/r/partition.result 2011-03-31 08:14:13 +0000 @@ -1,5 +1,63 @@ drop table if exists t1, t2; # +# BUG#11933226 - 60681: CHECKSUM TABLE RETURNS 0 FOR PARTITIONED TABLE +# +CREATE TABLE t1 ( +i INT +) ENGINE=MyISAM +PARTITION BY RANGE (i) ( +PARTITION p3 VALUES LESS THAN (3), +PARTITION p5 VALUES LESS THAN (5), +PARTITION pMax VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6); +CHECKSUM TABLE t1; +Table Checksum +test.t1 2653438147 +ALTER TABLE t1 CHECKSUM = 1; +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 2653438147 +# Before patch this returned 0! +CHECKSUM TABLE t1; +Table Checksum +test.t1 2653438147 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 CHECKSUM=1 +/*!50100 PARTITION BY RANGE (i) +(PARTITION p3 VALUES LESS THAN (3) ENGINE = MyISAM, + PARTITION p5 VALUES LESS THAN (5) ENGINE = MyISAM, + PARTITION pMax VALUES LESS THAN MAXVALUE ENGINE = MyISAM) */ +DROP TABLE t1; +# Same test without partitioning +CREATE TABLE t1 ( +i INT +) ENGINE=MyISAM; +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 +INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6); +CHECKSUM TABLE t1; +Table Checksum +test.t1 2653438147 +ALTER TABLE t1 CHECKSUM = 1; +CHECKSUM TABLE t1 EXTENDED; +Table Checksum +test.t1 2653438147 +CHECKSUM TABLE t1; +Table Checksum +test.t1 2653438147 +SHOW CREATE TABLE t1; +Table Create Table +t1 CREATE TABLE `t1` ( + `i` int(11) DEFAULT NULL +) ENGINE=MyISAM DEFAULT CHARSET=latin1 CHECKSUM=1 +DROP TABLE t1; +# # Bug#59297: Can't find record in 'tablename' on update inner join # CREATE TABLE t1 ( === modified file 'mysql-test/t/partition.test' --- a/mysql-test/t/partition.test 2011-03-09 17:12:23 +0000 +++ b/mysql-test/t/partition.test 2011-03-31 08:14:13 +0000 @@ -15,6 +15,38 @@ drop table if exists t1, t2; --enable_warnings --echo # +--echo # BUG#11933226 - 60681: CHECKSUM TABLE RETURNS 0 FOR PARTITIONED TABLE +--echo # +CREATE TABLE t1 ( + i INT +) ENGINE=MyISAM + PARTITION BY RANGE (i) ( + PARTITION p3 VALUES LESS THAN (3), + PARTITION p5 VALUES LESS THAN (5), + PARTITION pMax VALUES LESS THAN MAXVALUE); +INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6); +CHECKSUM TABLE t1; +ALTER TABLE t1 CHECKSUM = 1; +CHECKSUM TABLE t1 EXTENDED; +--echo # Before patch this returned 0! +CHECKSUM TABLE t1; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--echo # Same test without partitioning +CREATE TABLE t1 ( + i INT +) ENGINE=MyISAM; +SHOW CREATE TABLE t1; +INSERT INTO t1 VALUES (1), (2), (3), (4), (5), (6); +CHECKSUM TABLE t1; +ALTER TABLE t1 CHECKSUM = 1; +CHECKSUM TABLE t1 EXTENDED; +CHECKSUM TABLE t1; +SHOW CREATE TABLE t1; +DROP TABLE t1; + +--echo # --echo # Bug#59297: Can't find record in 'tablename' on update inner join --echo # === modified file 'sql/ha_partition.cc' --- a/sql/ha_partition.cc 2011-01-24 12:41:44 +0000 +++ b/sql/ha_partition.cc 2011-03-31 08:14:13 +0000 @@ -6664,6 +6664,27 @@ void ha_partition::init_table_handle_for } +/** + Return the checksum of the table (all partitions) +*/ + +uint ha_partition::checksum() const +{ + ha_checksum crc= 0; + + DBUG_ENTER("ha_partition::checksum"); + if ((table_flags() & HA_HAS_CHECKSUM)) + { + handler **file= m_file; + do + { + crc+= (*file)->checksum(); + } while (*(++file)); + } + DBUG_RETURN(crc_sum); +} + + /**************************************************************************** MODULE enable/disable indexes ****************************************************************************/ === modified file 'sql/ha_partition.h' --- a/sql/ha_partition.h 2010-10-01 11:39:49 +0000 +++ b/sql/ha_partition.h 2011-03-31 08:14:13 +0000 @@ -1100,8 +1100,8 @@ public: virtual int preload_keys(THD *thd, HA_CHECK_OPT *check_opt); virtual int dump(THD* thd, int fd = -1); virtual int net_read_dump(NET* net); - virtual uint checksum() const; */ + virtual uint checksum() const; /* ------------------------------------------------------------------------- --===============1633930842== 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\ # muylayrvmpxt3io9 # target_branch: file:///C:/ade/mysql-bzr/b11933226-51/ # testament_sha1: 290dcbce48cbef3f857c8819befb83ff6209e0a6 # timestamp: 2011-03-31 10:14:23 +0200 # base_revision_id: jon.hauglid@stripped\ # qskn0p4z4mk33v5c # # Begin bundle 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 5HJGs8inNtyqswJXhdyRThQkLzXzc4A= --===============1633930842==--