From: Date: March 31 2009 10:50am Subject: bzr commit into mysql-5.1-bugteam branch (Sergey.Glukhov:2840) Bug#33717 List-Archive: http://lists.mysql.com/commits/70869 X-Bug: 33717 Message-Id: <0KHD00GTC7BT4KC0@fe-emea-10.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_aTYzFdniPAM4Rrq58l8CnQ)" --Boundary_(ID_aTYzFdniPAM4Rrq58l8CnQ) MIME-version: 1.0 Content-type: text/plain; charset=us-ascii Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/gluh/MySQL/mysql-5.1-bug-33717/ based on revid:matthias.leich@stripped 2840 Sergey Glukhov 2009-03-31 Bug#33717 INSERT...(default) fails for enum. Crashes CSV tables, loads spaces for MyISAM Table corruption happens during table reading in ha_tina::find_current_row() func. Field::store() method returns error(true) if stored value is 0. The fix: added special case for enum type which correctly processes 0 value. Additional fix: INSERT...(default) and INSERT...() have the same behaviour now. @ mysql-test/r/csv.result test result @ mysql-test/r/default.result result fix @ mysql-test/t/csv.test test case @ sql/item.cc Changes: --do not print warning for 'enum' type if there is no default value --set default value @ storage/csv/ha_tina.cc Table corruption happens during table reading in ha_tina::find_current_row() func. Field::store() method returns error(true) if stored value is 0. The fix: added special case for enum type which correctly processes 0 value. modified: mysql-test/r/csv.result mysql-test/r/default.result mysql-test/t/csv.test sql/item.cc storage/csv/ha_tina.cc === modified file 'mysql-test/r/csv.result' --- a/mysql-test/r/csv.result 2009-01-23 12:22:05 +0000 +++ b/mysql-test/r/csv.result 2009-03-31 08:49:59 +0000 @@ -5394,17 +5394,24 @@ select * from t1; ERROR HY000: File 'MYSQLD_DATADIR/test/t1.CSV' not found (Errcode: 2) unlock tables; drop table t1; -create table t1(a enum ('a') not null) engine=csv; -insert into t1 values (2); +CREATE TABLE t1 (e enum('foo','bar') NOT NULL) ENGINE = CSV; +INSERT INTO t1 VALUES(); +INSERT INTO t1 VALUES(default); +INSERT INTO t1 VALUES(0); Warnings: -Warning 1265 Data truncated for column 'a' at row 1 -select * from t1 limit 1; -ERROR HY000: Table 't1' is marked as crashed and should be repaired -repair table t1; -Table Op Msg_type Msg_text -test.t1 repair Warning Data truncated for column 'a' at row 1 -test.t1 repair status OK -select * from t1 limit 1; -a -drop table t1; +Warning 1265 Data truncated for column 'e' at row 1 +INSERT INTO t1 VALUES(3); +Warnings: +Warning 1265 Data truncated for column 'e' at row 1 +INSERT INTO t1 VALUES(-1); +Warnings: +Warning 1265 Data truncated for column 'e' at row 1 +SELECT * FROM t1; +e +foo +foo + + + +DROP TABLE t1; End of 5.1 tests === modified file 'mysql-test/r/default.result' --- a/mysql-test/r/default.result 2008-09-03 08:06:03 +0000 +++ b/mysql-test/r/default.result 2009-03-31 08:49:59 +0000 @@ -180,7 +180,6 @@ insert into bug20691 values (2, 3, 5, '0 insert into bug20691 values (DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, 4); Warnings: Warning 1364 Field 'a' doesn't have a default value -Warning 1364 Field 'b' doesn't have a default value Warning 1364 Field 'c' doesn't have a default value Warning 1364 Field 'd' doesn't have a default value Warning 1364 Field 'e' doesn't have a default value @@ -193,7 +192,7 @@ a b c d e f g h i x two large 00:00:05 0007-01-01 11 13 17 0019-01-01 00:00:00 23 1 small 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 2 two large 00:00:05 0007-01-01 11 13 17 0019-01-01 00:00:00 23 3 - 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 4 + small 00:00:00 0000-00-00 0 0000-00-00 00:00:00 0 4 drop table bug20691; create table t1 (id int not null); insert into t1 values(default); === modified file 'mysql-test/t/csv.test' --- a/mysql-test/t/csv.test 2009-01-23 12:22:05 +0000 +++ b/mysql-test/t/csv.test 2009-03-31 08:49:59 +0000 @@ -1806,16 +1806,15 @@ drop table t1; --disconnect con1 # -# Bug#41441 repair csv table crashes debug server +# Bug#33717 INSERT...(default) fails for enum. Crashes CSV tables, loads spaces for MyISAM # -# Note: The test should be removed after Bug#33717 is fixed - -create table t1(a enum ('a') not null) engine=csv; -insert into t1 values (2); ---error ER_CRASHED_ON_USAGE -select * from t1 limit 1; -repair table t1; -select * from t1 limit 1; -drop table t1; +CREATE TABLE t1 (e enum('foo','bar') NOT NULL) ENGINE = CSV; +INSERT INTO t1 VALUES(); +INSERT INTO t1 VALUES(default); +INSERT INTO t1 VALUES(0); +INSERT INTO t1 VALUES(3); +INSERT INTO t1 VALUES(-1); +SELECT * FROM t1; +DROP TABLE t1; --echo End of 5.1 tests === modified file 'sql/item.cc' --- a/sql/item.cc 2009-03-27 13:00:20 +0000 +++ b/sql/item.cc 2009-03-31 08:49:59 +0000 @@ -6234,6 +6234,7 @@ void Item_default_value::print(String *s int Item_default_value::save_in_field(Field *field_arg, bool no_conversions) { + int err= 0; if (!arg) { if (field_arg->flags & NO_DEFAULT_VALUE_FLAG) @@ -6255,7 +6256,7 @@ int Item_default_value::save_in_field(Fi view->view_db.str, view->view_name.str); } - else + else if (field_arg->real_type() != MYSQL_TYPE_ENUM) { push_warning_printf(field_arg->table->in_use, MYSQL_ERROR::WARN_LEVEL_WARN, @@ -6263,10 +6264,10 @@ int Item_default_value::save_in_field(Fi ER(ER_NO_DEFAULT_FOR_FIELD), field_arg->field_name); } - return 1; + err= 1; } field_arg->set_default(); - return 0; + return err; } return Item_field::save_in_field(field_arg, no_conversions); } === modified file 'storage/csv/ha_tina.cc' --- a/storage/csv/ha_tina.cc 2009-03-24 09:02:01 +0000 +++ b/storage/csv/ha_tina.cc 2009-03-31 08:49:59 +0000 @@ -679,9 +679,13 @@ int ha_tina::find_current_row(uchar *buf if (read_all || bitmap_is_set(table->read_set, (*field)->field_index)) { + bool is_enum= ((*field)->real_type() == MYSQL_TYPE_ENUM); if ((*field)->store(buffer.ptr(), buffer.length(), buffer.charset(), - CHECK_FIELD_WARN)) - goto err; + is_enum ? CHECK_FIELD_IGNORE : CHECK_FIELD_WARN)) + { + if (!is_enum) + goto err; + } if ((*field)->flags & BLOB_FLAG) { Field_blob *blob= *(Field_blob**) field; --Boundary_(ID_aTYzFdniPAM4Rrq58l8CnQ) MIME-version: 1.0 Content-type: text/bzr-bundle; name="bzr/sergey.glukhov@stripped"; charset=us-ascii Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/sergey.glukhov@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: sergey.glukhov@stripped # target_branch: file:///home/gluh/MySQL/mysql-5.1-bug-33717/ # testament_sha1: b358506fe5259fab591bd4825449a4f98a7742c5 # timestamp: 2009-03-31 13:50:08 +0500 # base_revision_id: matthias.leich@stripped\ # o95fgp78cddr4900 # # Begin bundle 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 Wi2e4svplwNh/xdyRThQkCF2/2o= --Boundary_(ID_aTYzFdniPAM4Rrq58l8CnQ)--