Bug#51980 mysqld service crashes with a simple COUNT(DISTINCT) query over a view
Problem: Segmentation fault in add_group_and_distinct_keys() when accessing field of what is assumed to be an Item_field object. Cause: In case of views, the item added to list by is_indexed_agg_distinct() was not of type Item_field, but Item_ref. Resolution: Add the real Item_field object, the one referred to by Item_ref object, to the list, instead.
This commit is contained in:
parent
9b807ed57c
commit
5af5bb2da6
@ -86,3 +86,11 @@ select count(distinct if(f1,3,f2)) from t1;
|
||||
count(distinct if(f1,3,f2))
|
||||
2
|
||||
drop table t1;
|
||||
create table t1 (i int);
|
||||
insert into t1 values (0), (1);
|
||||
create view v1 as select * from t1;
|
||||
select count(distinct i) from v1;
|
||||
count(distinct i)
|
||||
2
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
@ -96,3 +96,14 @@ insert into t1 values (0,1),(1,2);
|
||||
select count(distinct if(f1,3,f2)) from t1;
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug #51980 "mysqld service crashes with a simple COUNT(DISTINCT) query
|
||||
# over a view"
|
||||
#
|
||||
|
||||
create table t1 (i int);
|
||||
insert into t1 values (0), (1);
|
||||
create view v1 as select * from t1;
|
||||
select count(distinct i) from v1;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
@ -4157,7 +4157,7 @@ is_indexed_agg_distinct(JOIN *join, List<Item_field> *out_args)
|
||||
optimization is applicable
|
||||
*/
|
||||
if (out_args)
|
||||
out_args->push_back((Item_field *) expr);
|
||||
out_args->push_back((Item_field *) expr->real_item());
|
||||
result= true;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user