1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

MDEV-19071 Wrong results when using STDDEV_SAMP() and view

This commit is contained in:
Sergei Golubchik
2022-12-06 15:48:13 +01:00
parent 6710fe4b42
commit f8adc47b69
6 changed files with 29 additions and 4 deletions

View File

@ -2552,5 +2552,19 @@ DROP TABLE t1;
# #
SET STATEMENT sql_mode=ONLY_FULL_GROUP_BY FOR EXECUTE IMMEDIATE 'ALTER TABLE mysql.time_zone_transition ORDER BY Time_zone_id, Transition_time'; SET STATEMENT sql_mode=ONLY_FULL_GROUP_BY FOR EXECUTE IMMEDIATE 'ALTER TABLE mysql.time_zone_transition ORDER BY Time_zone_id, Transition_time';
# #
# MDEV-19071 Wrong results when using STDDEV_SAMP() and view
#
create table t1(i int);
insert into t1 values (1),(2),(3),(4),(5);
create view v1 as select stddev_samp(i),stddev_pop(i),stddev(i),std(i) from t1;
show create view v1;
View Create View character_set_client collation_connection
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select stddev_samp(`t1`.`i`) AS `stddev_samp(i)`,std(`t1`.`i`) AS `stddev_pop(i)`,std(`t1`.`i`) AS `stddev(i)`,std(`t1`.`i`) AS `std(i)` from `t1` latin1 latin1_swedish_ci
select * from v1;
stddev_samp(i) stddev_pop(i) stddev(i) std(i)
1.5811 1.4142 1.4142 1.4142
drop view v1;
drop table t1;
#
# End of 10.3 tests # End of 10.3 tests
# #

View File

@ -1789,6 +1789,17 @@ DROP TABLE t1;
SET STATEMENT sql_mode=ONLY_FULL_GROUP_BY FOR EXECUTE IMMEDIATE 'ALTER TABLE mysql.time_zone_transition ORDER BY Time_zone_id, Transition_time'; SET STATEMENT sql_mode=ONLY_FULL_GROUP_BY FOR EXECUTE IMMEDIATE 'ALTER TABLE mysql.time_zone_transition ORDER BY Time_zone_id, Transition_time';
--echo #
--echo # MDEV-19071 Wrong results when using STDDEV_SAMP() and view
--echo #
create table t1(i int);
insert into t1 values (1),(2),(3),(4),(5);
create view v1 as select stddev_samp(i),stddev_pop(i),stddev(i),std(i) from t1;
show create view v1;
select * from v1;
drop view v1;
drop table t1;
--echo # --echo #
--echo # End of 10.3 tests --echo # End of 10.3 tests
--echo # --echo #

View File

@ -129,7 +129,7 @@ create table t1 (a int, b int generated always as (stddev_pop(a)) virtual);
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# STDDEV_SAMP() # STDDEV_SAMP()
create table t1 (a int, b int generated always as (stddev_samp(a)) virtual); create table t1 (a int, b int generated always as (stddev_samp(a)) virtual);
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'stddev_samp()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# STDDEV() # STDDEV()
create table t1 (a int, b int generated always as (stddev(a)) virtual); create table t1 (a int, b int generated always as (stddev(a)) virtual);
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b`

View File

@ -131,7 +131,7 @@ create table t1 (a int, b int generated always as (stddev_pop(a)) virtual);
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# STDDEV_SAMP() # STDDEV_SAMP()
create table t1 (a int, b int generated always as (stddev_samp(a)) virtual); create table t1 (a int, b int generated always as (stddev_samp(a)) virtual);
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'stddev_samp()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# STDDEV() # STDDEV()
create table t1 (a int, b int generated always as (stddev(a)) virtual); create table t1 (a int, b int generated always as (stddev(a)) virtual);
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b`

View File

@ -191,7 +191,7 @@ create or replace table t1 (a int, b int as (stddev_pop(a)));
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# STDDEV_SAMP() # STDDEV_SAMP()
create or replace table t1 (a int, b int as (stddev_samp(a))); create or replace table t1 (a int, b int as (stddev_samp(a)));
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'stddev_samp()' cannot be used in the GENERATED ALWAYS AS clause of `b`
# STDDEV() # STDDEV()
create or replace table t1 (a int, b int as (stddev(a))); create or replace table t1 (a int, b int as (stddev(a)));
ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b` ERROR HY000: Function or expression 'std()' cannot be used in the GENERATED ALWAYS AS clause of `b`

View File

@ -1038,7 +1038,7 @@ class Item_sum_std :public Item_sum_variance
enum Sumfunctype sum_func () const { return STD_FUNC; } enum Sumfunctype sum_func () const { return STD_FUNC; }
double val_real(); double val_real();
Item *result_item(THD *thd, Field *field); Item *result_item(THD *thd, Field *field);
const char *func_name() const { return "std("; } const char *func_name() const { return sample ? "stddev_samp(" : "std("; }
Item *copy_or_same(THD* thd); Item *copy_or_same(THD* thd);
Item *get_copy(THD *thd) Item *get_copy(THD *thd)
{ return get_item_copy<Item_sum_std>(thd, this); } { return get_item_copy<Item_sum_std>(thd, this); }