bugfix: RAND is VCOL_SESSION_FUNC

it's not "non deterministic", it's completely defined
by @@rand_seed1 and @@rand_seed2. And as a session func it needs
to be re-fixed at the beginning of every statement.
This commit is contained in:
Sergei Golubchik 2022-07-29 10:24:45 +02:00
parent 25219920f5
commit 6c7e3e5c13
3 changed files with 30 additions and 1 deletions

View File

@ -533,3 +533,19 @@ drop table t1;
#
# End of 10.2 tests
#
#
# RAND is session func
#
create table t1 (a int, b float default rand(1));
insert into t1 (a) values (1);
insert into t1 (a) values (2);
insert into t1 (a) values (3);
select * from t1;
a b
1 0.405404
2 0.405404
3 0.405404
drop table t1;
#
# End of 10.3 tests
#

View File

@ -506,3 +506,16 @@ drop table t1;
--echo # End of 10.2 tests
--echo #
--echo #
--echo # RAND is session func
--echo #
create table t1 (a int, b float default rand(1));
insert into t1 (a) values (1);
insert into t1 (a) values (2);
insert into t1 (a) values (3);
select * from t1;
drop table t1;
--echo #
--echo # End of 10.3 tests
--echo #

View File

@ -1513,7 +1513,7 @@ public:
void cleanup() { first_eval= TRUE; Item_real_func::cleanup(); }
bool check_vcol_func_processor(void *arg)
{
return mark_unsupported_function(func_name(), "()", arg, VCOL_NON_DETERMINISTIC);
return mark_unsupported_function(func_name(), "()", arg, VCOL_SESSION_FUNC);
}
Item *get_copy(THD *thd)
{ return get_item_copy<Item_func_rand>(thd, this); }