Loading mysql-test/r/func_math.result +5 −0 Original line number Diff line number Diff line Loading @@ -140,3 +140,8 @@ drop table t1; select abs(-2) * -2; abs(-2) * -2 -4 create table t1 (i int); insert into t1 values (1); select rand(i) from t1; ERROR HY000: Incorrect arguments to RAND drop table t1; mysql-test/r/ps.result +21 −23 Original line number Diff line number Diff line Loading @@ -334,39 +334,37 @@ create table t1 (a int); insert into t1 (a) values (1), (2), (3), (4); set @precision=10000000000; select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer) from t1; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) - 6570515219 - - 1282061302 - - 6698761160 - - 9647622201 - cast(rand(10)*@precision as unsigned integer) from t1; rand() cast(rand(10)*@precision as unsigned integer) - 6570515219 - 1282061302 - 6698761160 - 9647622201 prepare stmt from "select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer), cast(rand(?)*@precision as unsigned integer) from t1"; set @var=1; execute stmt using @var; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 - 4054035371 - 1282061302 - 8716141803 - 6698761160 - 1418603212 - 9647622201 - 944590960 rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 - - 1282061302 - - 6698761160 - - 9647622201 - set @var=2; execute stmt using @var; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 1559528654 6555866465 - 1282061302 6238114970 1223466192 - 6698761160 6511989195 6449731873 - 9647622201 3845601374 8578261098 rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 6555866465 - 1282061302 1223466192 - 6698761160 6449731873 - 9647622201 8578261098 set @var=3; execute stmt using @var; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 1559528654 9057697559 - 1282061302 6238114970 3730790581 - 6698761160 6511989195 1480860534 - 9647622201 3845601374 6211931236 rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 9057697559 - 1282061302 3730790581 - 6698761160 1480860534 - 9647622201 6211931236 drop table t1; deallocate prepare stmt; create database mysqltest1; Loading mysql-test/t/func_math.test +9 −0 Original line number Diff line number Diff line Loading @@ -77,4 +77,13 @@ drop table t1; # select abs(-2) * -2; # # Bug #6172 RAND(a) should only accept constant values as arguments # create table t1 (i int); insert into t1 values (1); --error 1210 select rand(i) from t1; drop table t1; # End of 4.1 tests mysql-test/t/ps.test +1 −3 Original line number Diff line number Diff line Loading @@ -368,12 +368,10 @@ insert into t1 (a) values (1), (2), (3), (4); set @precision=10000000000; --replace_column 1 - 3 - select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer) from t1; cast(rand(10)*@precision as unsigned integer) from t1; prepare stmt from "select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer), cast(rand(?)*@precision as unsigned integer) from t1"; set @var=1; --replace_column 1 - 3 - Loading sql/item_func.cc +5 −0 Original line number Diff line number Diff line Loading @@ -1038,6 +1038,11 @@ bool Item_func_rand::fix_fields(THD *thd, struct st_table_list *tables, used_tables_cache|= RAND_TABLE_BIT; if (arg_count) { // Only use argument once in query if (!args[0]->const_during_execution()) { my_error(ER_WRONG_ARGUMENTS, MYF(0), "RAND"); return TRUE; } /* Allocate rand structure once: we must use thd->current_arena to create rand in proper mem_root if it's a prepared statement or Loading Loading
mysql-test/r/func_math.result +5 −0 Original line number Diff line number Diff line Loading @@ -140,3 +140,8 @@ drop table t1; select abs(-2) * -2; abs(-2) * -2 -4 create table t1 (i int); insert into t1 values (1); select rand(i) from t1; ERROR HY000: Incorrect arguments to RAND drop table t1;
mysql-test/r/ps.result +21 −23 Original line number Diff line number Diff line Loading @@ -334,39 +334,37 @@ create table t1 (a int); insert into t1 (a) values (1), (2), (3), (4); set @precision=10000000000; select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer) from t1; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) - 6570515219 - - 1282061302 - - 6698761160 - - 9647622201 - cast(rand(10)*@precision as unsigned integer) from t1; rand() cast(rand(10)*@precision as unsigned integer) - 6570515219 - 1282061302 - 6698761160 - 9647622201 prepare stmt from "select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer), cast(rand(?)*@precision as unsigned integer) from t1"; set @var=1; execute stmt using @var; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 - 4054035371 - 1282061302 - 8716141803 - 6698761160 - 1418603212 - 9647622201 - 944590960 rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 - - 1282061302 - - 6698761160 - - 9647622201 - set @var=2; execute stmt using @var; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 1559528654 6555866465 - 1282061302 6238114970 1223466192 - 6698761160 6511989195 6449731873 - 9647622201 3845601374 8578261098 rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 6555866465 - 1282061302 1223466192 - 6698761160 6449731873 - 9647622201 8578261098 set @var=3; execute stmt using @var; rand() cast(rand(10)*@precision as unsigned integer) cast(rand(a)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 1559528654 9057697559 - 1282061302 6238114970 3730790581 - 6698761160 6511989195 1480860534 - 9647622201 3845601374 6211931236 rand() cast(rand(10)*@precision as unsigned integer) cast(rand(?)*@precision as unsigned integer) - 6570515219 9057697559 - 1282061302 3730790581 - 6698761160 1480860534 - 9647622201 6211931236 drop table t1; deallocate prepare stmt; create database mysqltest1; Loading
mysql-test/t/func_math.test +9 −0 Original line number Diff line number Diff line Loading @@ -77,4 +77,13 @@ drop table t1; # select abs(-2) * -2; # # Bug #6172 RAND(a) should only accept constant values as arguments # create table t1 (i int); insert into t1 values (1); --error 1210 select rand(i) from t1; drop table t1; # End of 4.1 tests
mysql-test/t/ps.test +1 −3 Original line number Diff line number Diff line Loading @@ -368,12 +368,10 @@ insert into t1 (a) values (1), (2), (3), (4); set @precision=10000000000; --replace_column 1 - 3 - select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer) from t1; cast(rand(10)*@precision as unsigned integer) from t1; prepare stmt from "select rand(), cast(rand(10)*@precision as unsigned integer), cast(rand(a)*@precision as unsigned integer), cast(rand(?)*@precision as unsigned integer) from t1"; set @var=1; --replace_column 1 - 3 - Loading
sql/item_func.cc +5 −0 Original line number Diff line number Diff line Loading @@ -1038,6 +1038,11 @@ bool Item_func_rand::fix_fields(THD *thd, struct st_table_list *tables, used_tables_cache|= RAND_TABLE_BIT; if (arg_count) { // Only use argument once in query if (!args[0]->const_during_execution()) { my_error(ER_WRONG_ARGUMENTS, MYF(0), "RAND"); return TRUE; } /* Allocate rand structure once: we must use thd->current_arena to create rand in proper mem_root if it's a prepared statement or Loading