mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix bug #12922 if(sum(),...) with group from view returns wrong results
Fields of view represented by Item_direct_view_ref. When complex expression such as if(sum()>...,...) is splited in simpler parts by refs was ignored. Beside this direct ref doesn't use it's result_field and thus can't store it's result in tmp table which is needed for sum() ... group. All this results in reported bug. Item::split_sum_func2() now converts Item_direct_view_ref to Item_ref to make fields from view being storable in tmp table. sql/item.h: Fix bug #12922 if(sum(),...) with group from view returns wrong results Added function ref_type() to distinguish Item_ref subclasses sql/item.cc: Fix bug #12922 if(sum(),...) with group from view returns wrong results Item::split_sum_func2() now converts Item_direct_view_ref to Item_ref to make fields from view being storable in tmp table. mysql-test/t/view.test: Test case for bug#12922 if(sum(),...) with group from view returns wrong results mysql-test/r/view.result: Test case for bug#12922 if(sum(),...) with group from view returns wrong results
This commit is contained in:
@ -2151,3 +2151,12 @@ select * from v1;
|
||||
strcmp(f1,'a')
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
create table t1 (f1 int, f2 int,f3 int);
|
||||
insert into t1 values (1,10,20),(2,0,0);
|
||||
create view v1 as select * from t1;
|
||||
select if(sum(f1)>1,f2,f3) from v1 group by f1;
|
||||
if(sum(f1)>1,f2,f3)
|
||||
20
|
||||
0
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
@ -2018,3 +2018,13 @@ create view v1 as select strcmp(f1,'a') from t1;
|
||||
select * from v1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #12922 if(sum(),...) with group from view returns wrong results
|
||||
#
|
||||
create table t1 (f1 int, f2 int,f3 int);
|
||||
insert into t1 values (1,10,20),(2,0,0);
|
||||
create view v1 as select * from t1;
|
||||
select if(sum(f1)>1,f2,f3) from v1 group by f1;
|
||||
drop view v1;
|
||||
drop table t1;
|
||||
|
Reference in New Issue
Block a user