Loading mysql-test/r/myisam.result +8 −0 Original line number Diff line number Diff line Loading @@ -747,6 +747,14 @@ select count(id1) from t1 where id2 = 10; count(id1) 5 drop table t1; CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM; INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx'); UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; SELECT * FROM t1; a b xxxxxxxxx bbbbbb xxxxxxxxx bbbbbb DROP TABLE t1; set storage_engine=MyISAM; drop table if exists t1,t2,t3; --- Testing varchar --- Loading mysql-test/t/myisam.test +9 −1 Original line number Diff line number Diff line Loading @@ -697,6 +697,15 @@ select count(*) from t1 where id2 = 10; select count(id1) from t1 where id2 = 10; drop table t1; # # BUG#18036 - update of table joined to self reports table as crashed # CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM; INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx'); UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; SELECT * FROM t1; DROP TABLE t1; # End of 4.1 tests # Loading Loading @@ -869,4 +878,3 @@ drop table t1; create table t1 (a int not null, key key_block_size=1024 (a)); --error 1064 create table t1 (a int not null, key `a` key_block_size=1024 (a)); sql/sql_update.cc +7 −2 Original line number Diff line number Diff line Loading @@ -985,6 +985,11 @@ bool mysql_multi_update_prepare(THD *thd) } } } /* Set exclude_from_table_unique_test value back to FALSE. It is needed for further check in multi_update::prepare whether to use record cache. */ lex->select_lex.exclude_from_table_unique_test= FALSE; if (thd->fill_derived_tables() && mysql_handle_derived(lex, &mysql_derived_filling)) Loading Loading @@ -1164,7 +1169,7 @@ int multi_update::prepare(List<Item> ¬_used_values, for (table_ref= leaves; table_ref; table_ref= table_ref->next_leaf) { TABLE *table=table_ref->table; if (!(tables_to_update & table->map) && if ((tables_to_update & table->map) && unique_table(thd, table_ref, update_tables)) table->no_cache= 1; // Disable row cache } Loading Loading
mysql-test/r/myisam.result +8 −0 Original line number Diff line number Diff line Loading @@ -747,6 +747,14 @@ select count(id1) from t1 where id2 = 10; count(id1) 5 drop table t1; CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM; INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx'); UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; SELECT * FROM t1; a b xxxxxxxxx bbbbbb xxxxxxxxx bbbbbb DROP TABLE t1; set storage_engine=MyISAM; drop table if exists t1,t2,t3; --- Testing varchar --- Loading
mysql-test/t/myisam.test +9 −1 Original line number Diff line number Diff line Loading @@ -697,6 +697,15 @@ select count(*) from t1 where id2 = 10; select count(id1) from t1 where id2 = 10; drop table t1; # # BUG#18036 - update of table joined to self reports table as crashed # CREATE TABLE t1(a CHAR(9), b VARCHAR(7)) ENGINE=MyISAM; INSERT INTO t1(a) VALUES('xxxxxxxxx'),('xxxxxxxxx'); UPDATE t1 AS ta1,t1 AS ta2 SET ta1.b='aaaaaa',ta2.b='bbbbbb'; SELECT * FROM t1; DROP TABLE t1; # End of 4.1 tests # Loading Loading @@ -869,4 +878,3 @@ drop table t1; create table t1 (a int not null, key key_block_size=1024 (a)); --error 1064 create table t1 (a int not null, key `a` key_block_size=1024 (a));
sql/sql_update.cc +7 −2 Original line number Diff line number Diff line Loading @@ -985,6 +985,11 @@ bool mysql_multi_update_prepare(THD *thd) } } } /* Set exclude_from_table_unique_test value back to FALSE. It is needed for further check in multi_update::prepare whether to use record cache. */ lex->select_lex.exclude_from_table_unique_test= FALSE; if (thd->fill_derived_tables() && mysql_handle_derived(lex, &mysql_derived_filling)) Loading Loading @@ -1164,7 +1169,7 @@ int multi_update::prepare(List<Item> ¬_used_values, for (table_ref= leaves; table_ref; table_ref= table_ref->next_leaf) { TABLE *table=table_ref->table; if (!(tables_to_update & table->map) && if ((tables_to_update & table->map) && unique_table(thd, table_ref, update_tables)) table->no_cache= 1; // Disable row cache } Loading