1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

MDEV-23656 view: removal of parentheses results in wrong result

Item_ref should have the precedence of the item it's referencing
This commit is contained in:
Sergei Golubchik
2020-10-01 16:35:55 +02:00
parent 15f03c2041
commit 2cd5df8c83
3 changed files with 28 additions and 1 deletions

View File

@ -0,0 +1,13 @@
#
# MDEV-23656 view: removal of parentheses results in wrong result
#
create table t1 (a int, b decimal(10,2));
insert into t1 values (1, 10.2);
create view v1 as select avg(b) / (2 + a) from t1;
show create view v1;
View v1
Create View CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select avg(`t1`.`b`) / (2 + `t1`.`a`) AS `avg(b) / (2 + a)` from `t1`
character_set_client latin1
collation_connection latin1_swedish_ci
drop view v1;
drop table t1;

View File

@ -0,0 +1,10 @@
--echo #
--echo # MDEV-23656 view: removal of parentheses results in wrong result
--echo #
create table t1 (a int, b decimal(10,2));
insert into t1 values (1, 10.2);
create view v1 as select avg(b) / (2 + a) from t1;
query_vertical show create view v1;
drop view v1;
drop table t1;

View File

@ -4541,7 +4541,11 @@ public:
{ {
(*ref)->restore_to_before_no_rows_in_result(); (*ref)->restore_to_before_no_rows_in_result();
} }
virtual void print(String *str, enum_query_type query_type); void print(String *str, enum_query_type query_type);
enum precedence precedence() const
{
return ref ? (*ref)->precedence() : DEFAULT_PRECEDENCE;
}
void cleanup(); void cleanup();
Item_field *field_for_view_update() Item_field *field_for_view_update()
{ return (*ref)->field_for_view_update(); } { return (*ref)->field_for_view_update(); }