Loading mysql-test/r/func_misc.result +24 −0 Original line number Diff line number Diff line Loading @@ -70,3 +70,27 @@ select timediff(b, a) >= '00:00:03' from t1; timediff(b, a) >= '00:00:03' 1 drop table t1; set global query_cache_size=1355776; create table t1 (a int); insert into t1 values (1),(1),(1); create table t2 (a datetime default null, b datetime default null); insert into t2 set a = now(); select a from t1 where sleep(1); a update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(a); a update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(1); a update t2 set b = now() where b is null; select timediff(b, a) >= '00:00:03' from t2; timediff(b, a) >= '00:00:03' 1 1 1 drop table t2; drop table t1; set global query_cache_size=default; mysql-test/t/func_misc.test +23 −0 Original line number Diff line number Diff line Loading @@ -55,3 +55,26 @@ select sleep(3); update t1 set b = now(); select timediff(b, a) >= '00:00:03' from t1; drop table t1; # # Bug #12689: SLEEP() gets incorrectly cached/optimized-away # set global query_cache_size=1355776; create table t1 (a int); insert into t1 values (1),(1),(1); create table t2 (a datetime default null, b datetime default null); insert into t2 set a = now(); select a from t1 where sleep(1); update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(a); update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(1); update t2 set b = now() where b is null; select timediff(b, a) >= '00:00:03' from t2; drop table t2; drop table t1; set global query_cache_size=default; # End of 5.0 tests sql/item_create.cc +1 −0 Original line number Diff line number Diff line Loading @@ -356,6 +356,7 @@ Item *create_func_sha(Item* a) Item *create_func_sleep(Item* a) { current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return new Item_func_sleep(a); } Loading sql/item_func.h +6 −0 Original line number Diff line number Diff line Loading @@ -893,7 +893,13 @@ class Item_func_sleep :public Item_int_func { public: Item_func_sleep(Item *a) :Item_int_func(a) {} bool const_item() const { return 0; } const char *func_name() const { return "sleep"; } void update_used_tables() { Item_int_func::update_used_tables(); used_tables_cache|= RAND_TABLE_BIT; } longlong val_int(); }; Loading Loading
mysql-test/r/func_misc.result +24 −0 Original line number Diff line number Diff line Loading @@ -70,3 +70,27 @@ select timediff(b, a) >= '00:00:03' from t1; timediff(b, a) >= '00:00:03' 1 drop table t1; set global query_cache_size=1355776; create table t1 (a int); insert into t1 values (1),(1),(1); create table t2 (a datetime default null, b datetime default null); insert into t2 set a = now(); select a from t1 where sleep(1); a update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(a); a update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(1); a update t2 set b = now() where b is null; select timediff(b, a) >= '00:00:03' from t2; timediff(b, a) >= '00:00:03' 1 1 1 drop table t2; drop table t1; set global query_cache_size=default;
mysql-test/t/func_misc.test +23 −0 Original line number Diff line number Diff line Loading @@ -55,3 +55,26 @@ select sleep(3); update t1 set b = now(); select timediff(b, a) >= '00:00:03' from t1; drop table t1; # # Bug #12689: SLEEP() gets incorrectly cached/optimized-away # set global query_cache_size=1355776; create table t1 (a int); insert into t1 values (1),(1),(1); create table t2 (a datetime default null, b datetime default null); insert into t2 set a = now(); select a from t1 where sleep(1); update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(a); update t2 set b = now() where b is null; insert into t2 set a = now(); select a from t1 where sleep(1); update t2 set b = now() where b is null; select timediff(b, a) >= '00:00:03' from t2; drop table t2; drop table t1; set global query_cache_size=default; # End of 5.0 tests
sql/item_create.cc +1 −0 Original line number Diff line number Diff line Loading @@ -356,6 +356,7 @@ Item *create_func_sha(Item* a) Item *create_func_sleep(Item* a) { current_thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT); return new Item_func_sleep(a); } Loading
sql/item_func.h +6 −0 Original line number Diff line number Diff line Loading @@ -893,7 +893,13 @@ class Item_func_sleep :public Item_int_func { public: Item_func_sleep(Item *a) :Item_int_func(a) {} bool const_item() const { return 0; } const char *func_name() const { return "sleep"; } void update_used_tables() { Item_int_func::update_used_tables(); used_tables_cache|= RAND_TABLE_BIT; } longlong val_int(); }; Loading