From d9a9f5c71f4da5ea44d1b4fc3cf22c9ab52b6d5f Mon Sep 17 00:00:00 2001 From: Sergey Glukhov Date: Thu, 26 Mar 2009 18:27:34 +0400 Subject: [PATCH 1/4] fixed archive test. It might be OOM error on boxes with low amount of memory. It leads to crash because there is no OOM check in ha_archive::unpack_row(). The fix: added OOM error check mysql-test/r/archive.result: remover test case mysql-test/std_data/bug32880.ARN: remover test case mysql-test/std_data/bug32880.ARZ: remover test case mysql-test/std_data/bug32880.frm: remover test case mysql-test/t/archive.test: remover test case --- mysql-test/r/archive.result | 19 ------------------- mysql-test/std_data/bug32880.ARN | Bin 131 -> 0 bytes mysql-test/std_data/bug32880.ARZ | Bin 8744 -> 0 bytes mysql-test/std_data/bug32880.frm | Bin 8578 -> 0 bytes mysql-test/t/archive.test | 15 --------------- storage/archive/ha_archive.cc | 6 +++++- 6 files changed, 5 insertions(+), 35 deletions(-) delete mode 100644 mysql-test/std_data/bug32880.ARN delete mode 100644 mysql-test/std_data/bug32880.ARZ delete mode 100644 mysql-test/std_data/bug32880.frm diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index 02acccb234e..8c26ea1ff82 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -12695,22 +12695,3 @@ a b 1 NULL 2 NULL DROP TABLE t1; -# -# BUG#32880 - Repairing Archive table fails with internal error 144 -# - -# Test with an existing table which is corrupted -# Copy t1 from std_data -SHOW CREATE TABLE t1; -Table Create Table -t1 CREATE TABLE `t1` ( - `a` int(11) DEFAULT NULL, - `b` blob -) ENGINE=ARCHIVE DEFAULT CHARSET=latin1 -CHECK TABLE t1; -Table Op Msg_type Msg_text -test.t1 check error Corrupt -REPAIR TABLE t1; -Table Op Msg_type Msg_text -test.t1 repair error Corrupt -DROP TABLE t1; diff --git a/mysql-test/std_data/bug32880.ARN b/mysql-test/std_data/bug32880.ARN deleted file mode 100644 index 643b0dfbad59af05495571978acc8b5eeaf8b509..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeyz%qYO%$AAi8dqei4wVSWE@5vi;Yx=ZHHrNyljV=3 gvkA%YRCc;{PVKA|P+c6Av6_|P_LJg8GZ+~d03i_-e*gdg diff --git a/mysql-test/std_data/bug32880.ARZ b/mysql-test/std_data/bug32880.ARZ deleted file mode 100644 index 4e151822647f1b7e0f3f2b9952ef543f9a7954ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8744 zcmeI&ze>YE90%}kE^WOwLQ_+U|G-v?pi7-QR7DDkP{ct*5RxuFL%>0bOI#ep7w|I1m=0(}aH((^7}($&Gi!uKHg{qC2`-SL@!GuQDk05EFlmmMEA5AD2YV{h9gHUv8Q z`pMQ~=9GO`*BoHqe5%gZ3yCt2?j*CS`S)`S)UraS12nSrP z3Q&Lo|5iXi<#(HBwzPz!i{q2i%YMFu2?Z!X0SZun0u-PC1t>rP3Q&Lo3nnmf(tdyi zyY=5)*MUG6rY)k1Qoiju8oF*q7p@TX-R3U`3J{U*nGi!1gy)$}HtzK{uI`{H3MtJQ zwTC(|Jpfdsh6=j-!j4H4hF@dZzFK<>&h~=%@NQ@It^K_9ep_1ET#l1|@{+`fS*+Bg Wb>pSU>r>;WvOc)BNhQ>$RK5X*A2h-M diff --git a/mysql-test/std_data/bug32880.frm b/mysql-test/std_data/bug32880.frm deleted file mode 100644 index 66a4c7d7538ef06353e4b38b8699203736844857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8578 zcmeI&u?oU45C-5s*H%+Hw8i4$($%TXT|`9CO&r|YClT?@dj)_ z@U6LrNs9<546x7zIYNj<3M77Shhm}0?Fy7bp=p46*l?u)1t>rP3Q&Lo6rcbFC_n)U zP~d9?1TMVooxMt9tPbn#?zjm@m{5QM6rcbFC_n)UP=Epypa2CZ@M8jJqo4kN90r0G z6BWoY3J!ZrweF)uBvQ@m4+Alz)0qkB5lfc&CbN^aiFAS@5o`S&<)s4dOTcxmcX$FK Cm=+HJ diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index 0d521f95b38..7139d95ab49 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -1599,18 +1599,3 @@ INSERT INTO t1 VALUES (NULL, NULL),(NULL, NULL); FLUSH TABLE t1; SELECT * FROM t1 ORDER BY a; DROP TABLE t1; - ---echo # ---echo # BUG#32880 - Repairing Archive table fails with internal error 144 ---echo # ---echo ---echo # Test with an existing table which is corrupted ---echo # Copy t1 from std_data -let $MYSQLD_DATADIR= `select @@datadir`; -copy_file std_data/bug32880.frm $MYSQLD_DATADIR/test/t1.frm; -copy_file std_data/bug32880.ARZ $MYSQLD_DATADIR/test/t1.ARZ; -copy_file std_data/bug32880.ARN $MYSQLD_DATADIR/test/t1.ARN; -SHOW CREATE TABLE t1; -CHECK TABLE t1; -REPAIR TABLE t1; -DROP TABLE t1; diff --git a/storage/archive/ha_archive.cc b/storage/archive/ha_archive.cc index d20ab3bf723..5e2a4ad5da3 100644 --- a/storage/archive/ha_archive.cc +++ b/storage/archive/ha_archive.cc @@ -1071,7 +1071,11 @@ int ha_archive::unpack_row(azio_stream *file_to_read, uchar *record) row_len= uint4korr(size_buffer); DBUG_PRINT("ha_archive",("Unpack row length %u -> %u", row_len, (unsigned int)table->s->reclength)); - fix_rec_buff(row_len); + + if (fix_rec_buff(row_len)) + { + DBUG_RETURN(HA_ERR_OUT_OF_MEM); + } DBUG_ASSERT(row_len <= record_buffer->length); read= azread(file_to_read, record_buffer->buffer, row_len, &error); From 9b1ee3c67dbfd72ccfe4497fbb0115c4553a5069 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 26 Mar 2009 16:47:58 +0200 Subject: [PATCH 2/4] removed an unix-ism in a test --- mysql-test/t/upgrade.test | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mysql-test/t/upgrade.test b/mysql-test/t/upgrade.test index a96d1f47cb2..437b0f47cc0 100644 --- a/mysql-test/t/upgrade.test +++ b/mysql-test/t/upgrade.test @@ -53,7 +53,9 @@ drop table `txu#p#p1`; # let $MYSQLD_DATADIR= `select @@datadir`; -system cp $MYSQL_TEST_DIR/std_data/old_table-323.frm $MYSQLD_DATADIR/test/t1.frm; +--error 0,1 +--remove_file $MYSQLD_DATADIR/test/t1.frm +--copy_file std_data/old_table-323.frm $MYSQLD_DATADIR/test/t1.frm truncate t1; drop table t1; From 2f3b4cc796006678129acfea64824a6b868f988d Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Thu, 26 Mar 2009 17:49:06 +0200 Subject: [PATCH 3/4] fixed unupdated test suites. --- mysql-test/suite/funcs_1/r/processlist_priv_ps.result | 4 ++-- mysql-test/suite/funcs_1/r/processlist_val_ps.result | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result index 56230a0f806..2932467be2a 100644 --- a/mysql-test/suite/funcs_1/r/processlist_priv_ps.result +++ b/mysql-test/suite/funcs_1/r/processlist_priv_ps.result @@ -27,7 +27,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `HOST` varchar(64) NOT NULL DEFAULT '', `DB` varchar(64) DEFAULT NULL, `COMMAND` varchar(16) NOT NULL DEFAULT '', - `TIME` bigint(7) NOT NULL DEFAULT '0', + `TIME` int(7) NOT NULL DEFAULT '0', `STATE` varchar(64) DEFAULT NULL, `INFO` longtext ) ENGINE=MyISAM DEFAULT CHARSET=utf8 @@ -97,7 +97,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `HOST` varchar(64) NOT NULL DEFAULT '', `DB` varchar(64) DEFAULT NULL, `COMMAND` varchar(16) NOT NULL DEFAULT '', - `TIME` bigint(7) NOT NULL DEFAULT '0', + `TIME` int(7) NOT NULL DEFAULT '0', `STATE` varchar(64) DEFAULT NULL, `INFO` longtext ) ENGINE=MyISAM DEFAULT CHARSET=utf8 diff --git a/mysql-test/suite/funcs_1/r/processlist_val_ps.result b/mysql-test/suite/funcs_1/r/processlist_val_ps.result index 72ca56d0ffa..4e4cfa57e36 100644 --- a/mysql-test/suite/funcs_1/r/processlist_val_ps.result +++ b/mysql-test/suite/funcs_1/r/processlist_val_ps.result @@ -17,7 +17,7 @@ PROCESSLIST CREATE TEMPORARY TABLE `PROCESSLIST` ( `HOST` varchar(64) NOT NULL DEFAULT '', `DB` varchar(64) DEFAULT NULL, `COMMAND` varchar(16) NOT NULL DEFAULT '', - `TIME` bigint(7) NOT NULL DEFAULT '0', + `TIME` int(7) NOT NULL DEFAULT '0', `STATE` varchar(64) DEFAULT NULL, `INFO` longtext ) ENGINE=MyISAM DEFAULT CHARSET=utf8 From 68907b3478ae00f00111edeeacf018de0c7b36b6 Mon Sep 17 00:00:00 2001 From: Georgi Kodinov Date: Fri, 27 Mar 2009 12:59:31 +0200 Subject: [PATCH 4/4] Worked around the problem described in bug #43884. --- mysql-test/suite/rpl/r/rpl_loadfile.result | 2 +- mysql-test/suite/rpl/t/rpl_loadfile.test | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mysql-test/suite/rpl/r/rpl_loadfile.result b/mysql-test/suite/rpl/r/rpl_loadfile.result index 63710326086..22f65c0b5e5 100644 --- a/mysql-test/suite/rpl/r/rpl_loadfile.result +++ b/mysql-test/suite/rpl/r/rpl_loadfile.result @@ -233,7 +233,7 @@ include/start_slave.inc SELECT repeat('x',20) INTO OUTFILE 'MYSQLTEST_VARDIR/tmp/bug_39701.data'; DROP TABLE IF EXISTS t1; CREATE TABLE t1 (t text); -CREATE PROCEDURE p(file TEXT) +CREATE PROCEDURE p(file varchar(4096)) BEGIN INSERT INTO t1 VALUES (LOAD_FILE(file)); END| diff --git a/mysql-test/suite/rpl/t/rpl_loadfile.test b/mysql-test/suite/rpl/t/rpl_loadfile.test index d12d43224df..adb23d2c2bc 100644 --- a/mysql-test/suite/rpl/t/rpl_loadfile.test +++ b/mysql-test/suite/rpl/t/rpl_loadfile.test @@ -73,7 +73,7 @@ enable_warnings; CREATE TABLE t1 (t text); DELIMITER |; -CREATE PROCEDURE p(file TEXT) +CREATE PROCEDURE p(file varchar(4096)) BEGIN INSERT INTO t1 VALUES (LOAD_FILE(file)); END|