Loading mysql-test/r/ps.result +34 −0 Original line number Diff line number Diff line Loading @@ -718,3 +718,37 @@ execute stmt; drop table t1; set names default; deallocate prepare stmt; create table t1 ( word_id mediumint(8) unsigned not null default '0', formatted varchar(20) not null default '' ); insert into t1 values (80,'pendant'), (475,'pretendants'), (989,'tendances'), (1019,'cependant'),(1022,'abondance'),(1205,'independants'), (13,'lessiver'),(25,'lambiner'),(46,'situer'),(71,'terminer'), (82,'decrocher'); select count(*) from t1 where formatted like '%NDAN%'; count(*) 6 select count(*) from t1 where formatted like '%ER'; count(*) 5 prepare stmt from "select count(*) from t1 where formatted like ?"; set @like="%NDAN%"; execute stmt using @like; count(*) 6 set @like="%ER"; execute stmt using @like; count(*) 5 set @like="%NDAN%"; execute stmt using @like; count(*) 6 set @like="%ER"; execute stmt using @like; count(*) 5 deallocate prepare stmt; drop table t1; mysql-test/t/ps.test +30 −0 Original line number Diff line number Diff line Loading @@ -746,5 +746,35 @@ drop table t1; set names default; deallocate prepare stmt; # # A test case for Bug#12734 "prepared statement may return incorrect result # set for a select SQL request": test that canDoTurboBM is reset for each # execute of a prepared statement. # create table t1 ( word_id mediumint(8) unsigned not null default '0', formatted varchar(20) not null default '' ); insert into t1 values (80,'pendant'), (475,'pretendants'), (989,'tendances'), (1019,'cependant'),(1022,'abondance'),(1205,'independants'), (13,'lessiver'),(25,'lambiner'),(46,'situer'),(71,'terminer'), (82,'decrocher'); select count(*) from t1 where formatted like '%NDAN%'; select count(*) from t1 where formatted like '%ER'; prepare stmt from "select count(*) from t1 where formatted like ?"; set @like="%NDAN%"; execute stmt using @like; set @like="%ER"; execute stmt using @like; set @like="%NDAN%"; execute stmt using @like; set @like="%ER"; execute stmt using @like; deallocate prepare stmt; drop table t1; # End of 4.1 tests sql/item_cmpfunc.cc +6 −0 Original line number Diff line number Diff line Loading @@ -2524,6 +2524,12 @@ bool Item_func_like::fix_fields(THD *thd, TABLE_LIST *tlist, Item ** ref) return 0; } void Item_func_like::cleanup() { canDoTurboBM= FALSE; Item_bool_func2::cleanup(); } #ifdef USE_REGEX bool Loading sql/item_cmpfunc.h +1 −0 Original line number Diff line number Diff line Loading @@ -911,6 +911,7 @@ class Item_func_like :public Item_bool_func2 cond_result eq_cmp_result() const { return COND_TRUE; } const char *func_name() const { return "like"; } bool fix_fields(THD *thd, struct st_table_list *tlist, Item **ref); void cleanup(); }; #ifdef USE_REGEX Loading Loading
mysql-test/r/ps.result +34 −0 Original line number Diff line number Diff line Loading @@ -718,3 +718,37 @@ execute stmt; drop table t1; set names default; deallocate prepare stmt; create table t1 ( word_id mediumint(8) unsigned not null default '0', formatted varchar(20) not null default '' ); insert into t1 values (80,'pendant'), (475,'pretendants'), (989,'tendances'), (1019,'cependant'),(1022,'abondance'),(1205,'independants'), (13,'lessiver'),(25,'lambiner'),(46,'situer'),(71,'terminer'), (82,'decrocher'); select count(*) from t1 where formatted like '%NDAN%'; count(*) 6 select count(*) from t1 where formatted like '%ER'; count(*) 5 prepare stmt from "select count(*) from t1 where formatted like ?"; set @like="%NDAN%"; execute stmt using @like; count(*) 6 set @like="%ER"; execute stmt using @like; count(*) 5 set @like="%NDAN%"; execute stmt using @like; count(*) 6 set @like="%ER"; execute stmt using @like; count(*) 5 deallocate prepare stmt; drop table t1;
mysql-test/t/ps.test +30 −0 Original line number Diff line number Diff line Loading @@ -746,5 +746,35 @@ drop table t1; set names default; deallocate prepare stmt; # # A test case for Bug#12734 "prepared statement may return incorrect result # set for a select SQL request": test that canDoTurboBM is reset for each # execute of a prepared statement. # create table t1 ( word_id mediumint(8) unsigned not null default '0', formatted varchar(20) not null default '' ); insert into t1 values (80,'pendant'), (475,'pretendants'), (989,'tendances'), (1019,'cependant'),(1022,'abondance'),(1205,'independants'), (13,'lessiver'),(25,'lambiner'),(46,'situer'),(71,'terminer'), (82,'decrocher'); select count(*) from t1 where formatted like '%NDAN%'; select count(*) from t1 where formatted like '%ER'; prepare stmt from "select count(*) from t1 where formatted like ?"; set @like="%NDAN%"; execute stmt using @like; set @like="%ER"; execute stmt using @like; set @like="%NDAN%"; execute stmt using @like; set @like="%ER"; execute stmt using @like; deallocate prepare stmt; drop table t1; # End of 4.1 tests
sql/item_cmpfunc.cc +6 −0 Original line number Diff line number Diff line Loading @@ -2524,6 +2524,12 @@ bool Item_func_like::fix_fields(THD *thd, TABLE_LIST *tlist, Item ** ref) return 0; } void Item_func_like::cleanup() { canDoTurboBM= FALSE; Item_bool_func2::cleanup(); } #ifdef USE_REGEX bool Loading
sql/item_cmpfunc.h +1 −0 Original line number Diff line number Diff line Loading @@ -911,6 +911,7 @@ class Item_func_like :public Item_bool_func2 cond_result eq_cmp_result() const { return COND_TRUE; } const char *func_name() const { return "like"; } bool fix_fields(THD *thd, struct st_table_list *tlist, Item **ref); void cleanup(); }; #ifdef USE_REGEX Loading