From: Sergey Vojtovich Date: February 24 2011 12:25pm Subject: bzr commit into mysql-5.1 branch (sergey.vojtovich:3605) Bug#11764339 List-Archive: http://lists.mysql.com/commits/132013 X-Bug: 11764339 Message-Id: <201102241228.p1OCSK61013376@acsinet15.oracle.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============3980489181570755329==" --===============3980489181570755329== MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline #At file:///home/svoj/mysql/server/mysql-5.1-bug57162/ based on revid:build@stripped 3605 Sergey Vojtovich 2011-02-24 BUG#11764339 - valgrind errors, random data when returning ordered data from archive tables Archive was using wrong memory address to check if field is NULL (after filesort, when reading record again). @ mysql-test/r/archive.result A test case for BUG#11764339. @ mysql-test/t/archive.test A test case for BUG#11764339. @ storage/archive/ha_archive.cc Null bytes are restored to "record" buffer, which may or may not be equal to record buffer for field. Check null bits in "record" buffer, instead of Field::null_ptr. modified: mysql-test/r/archive.result mysql-test/t/archive.test storage/archive/ha_archive.cc === modified file 'mysql-test/r/archive.result' --- a/mysql-test/r/archive.result 2010-03-25 19:57:06 +0000 +++ b/mysql-test/r/archive.result 2011-02-24 12:25:07 +0000 @@ -12756,3 +12756,19 @@ a 1 2 DROP TABLE t1; +# +# BUG#57162 - valgrind errors, random data when returning +# ordered data from archive tables +# +SET sort_buffer_size=32804; +CREATE TABLE t1(a INT, b CHAR(255), c CHAR(255), d CHAR(255), +e CHAR(255), f INT) ENGINE=ARCHIVE DEFAULT CHARSET utf8; +INSERT INTO t1 VALUES(-1,'b','c','d','e',1); +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT t1.* FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6; +SELECT * FROM t1 ORDER BY f LIMIT 1; +a b c d e f +-1 b c d e 1 +DROP TABLE t1; +SET sort_buffer_size=DEFAULT; === modified file 'mysql-test/t/archive.test' --- a/mysql-test/t/archive.test 2010-03-25 19:57:06 +0000 +++ b/mysql-test/t/archive.test 2011-02-24 12:25:07 +0000 @@ -1678,3 +1678,18 @@ SELECT * FROM t1; REPAIR TABLE t1 EXTENDED; SELECT * FROM t1; DROP TABLE t1; + +--echo # +--echo # BUG#57162 - valgrind errors, random data when returning +--echo # ordered data from archive tables +--echo # +SET sort_buffer_size=32804; +CREATE TABLE t1(a INT, b CHAR(255), c CHAR(255), d CHAR(255), + e CHAR(255), f INT) ENGINE=ARCHIVE DEFAULT CHARSET utf8; +INSERT INTO t1 VALUES(-1,'b','c','d','e',1); +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT * FROM t1; +INSERT INTO t1 SELECT t1.* FROM t1,t1 t2,t1 t3,t1 t4,t1 t5,t1 t6; +SELECT * FROM t1 ORDER BY f LIMIT 1; +DROP TABLE t1; +SET sort_buffer_size=DEFAULT; === modified file 'storage/archive/ha_archive.cc' --- a/storage/archive/ha_archive.cc 2010-03-25 19:57:06 +0000 +++ b/storage/archive/ha_archive.cc 2011-02-24 12:25:07 +0000 @@ -1111,7 +1111,7 @@ int ha_archive::unpack_row(azio_stream * ptr+= table->s->null_bytes; for (Field **field=table->field ; *field ; field++) { - if (!((*field)->is_null())) + if (!((*field)->is_null_in_record(record))) { ptr= (*field)->unpack(record + (*field)->offset(table->record[0]), ptr); } --===============3980489181570755329== MIME-Version: 1.0 Content-Type: text/bzr-bundle; charset="us-ascii"; name="bzr/sergey.vojtovich@stripped" Content-Transfer-Encoding: 7bit Content-Disposition: inline # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.vojtovich@stripped\ # bp1tmv0nxiw4wn0n # target_branch: file:///home/svoj/mysql/server/mysql-5.1-bug57162/ # testament_sha1: c77f24305fa7a277dc833e184a83e9c3f6c1413f # timestamp: 2011-02-24 15:25:13 +0300 # base_revision_id: build@stripped # # Begin bundle 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 --===============3980489181570755329==--