Loading mysql-test/r/select.result +21 −0 Original line number Diff line number Diff line Loading @@ -2455,3 +2455,24 @@ a select x.a, y.a, z.a from ( (t1 x inner join t2 y on x.a=y.a) inner join t2 z on y.a=z.a) WHERE x.a=1; a a a drop table t1,t2; create table t1 (s1 varchar(5)); insert into t1 values ('Wall'); select min(s1) from t1 group by s1 with rollup; min(s1) Wall Wall drop table t1; create table t1 (s1 int) engine=myisam; insert into t1 values (0); select avg(distinct s1) from t1 group by s1 with rollup; avg(distinct s1) 0.0000 0.0000 drop table t1; create table t1 (s1 int); insert into t1 values (null),(1); select distinct avg(s1) as x from t1 group by s1 with rollup; x NULL 1.0000 drop table t1; mysql-test/t/select.test +27 −0 Original line number Diff line number Diff line Loading @@ -2029,3 +2029,30 @@ select t1.a from (t1 inner join t2 on t1.a=t2.a) where t2.a=1; select t1.a from ((t1 inner join t2 on t1.a=t2.a)) where t2.a=1; select x.a, y.a, z.a from ( (t1 x inner join t2 y on x.a=y.a) inner join t2 z on y.a=z.a) WHERE x.a=1; drop table t1,t2; # # Bug#9820 # create table t1 (s1 varchar(5)); insert into t1 values ('Wall'); select min(s1) from t1 group by s1 with rollup; drop table t1; # # Bug#9799 # create table t1 (s1 int) engine=myisam; insert into t1 values (0); select avg(distinct s1) from t1 group by s1 with rollup; drop table t1; # # Bug#9800 # create table t1 (s1 int); insert into t1 values (null),(1); select distinct avg(s1) as x from t1 group by s1 with rollup; drop table t1; sql/item_sum.cc +6 −1 Original line number Diff line number Diff line Loading @@ -240,6 +240,8 @@ Item_sum_hybrid::Item_sum_hybrid(THD *thd, Item_sum_hybrid *item) case REAL_RESULT: sum= item->sum; break; case STRING_RESULT: // This can happen with ROLLUP. Note that the value is already break; // copied at function call. case ROW_RESULT: default: DBUG_ASSERT(0); Loading Loading @@ -585,7 +587,10 @@ bool Item_sum_distinct::setup(THD *thd) DBUG_ENTER("Item_sum_distinct::setup"); DBUG_ASSERT(tree == 0); /* setup can not be called twice */ /* Setup can be called twice for ROLLUP items. This is a bug. Please add DBUG_ASSERT(tree == 0) here when it's fixed. */ /* Virtual table and the tree are created anew on each re-execution of Loading Loading
mysql-test/r/select.result +21 −0 Original line number Diff line number Diff line Loading @@ -2455,3 +2455,24 @@ a select x.a, y.a, z.a from ( (t1 x inner join t2 y on x.a=y.a) inner join t2 z on y.a=z.a) WHERE x.a=1; a a a drop table t1,t2; create table t1 (s1 varchar(5)); insert into t1 values ('Wall'); select min(s1) from t1 group by s1 with rollup; min(s1) Wall Wall drop table t1; create table t1 (s1 int) engine=myisam; insert into t1 values (0); select avg(distinct s1) from t1 group by s1 with rollup; avg(distinct s1) 0.0000 0.0000 drop table t1; create table t1 (s1 int); insert into t1 values (null),(1); select distinct avg(s1) as x from t1 group by s1 with rollup; x NULL 1.0000 drop table t1;
mysql-test/t/select.test +27 −0 Original line number Diff line number Diff line Loading @@ -2029,3 +2029,30 @@ select t1.a from (t1 inner join t2 on t1.a=t2.a) where t2.a=1; select t1.a from ((t1 inner join t2 on t1.a=t2.a)) where t2.a=1; select x.a, y.a, z.a from ( (t1 x inner join t2 y on x.a=y.a) inner join t2 z on y.a=z.a) WHERE x.a=1; drop table t1,t2; # # Bug#9820 # create table t1 (s1 varchar(5)); insert into t1 values ('Wall'); select min(s1) from t1 group by s1 with rollup; drop table t1; # # Bug#9799 # create table t1 (s1 int) engine=myisam; insert into t1 values (0); select avg(distinct s1) from t1 group by s1 with rollup; drop table t1; # # Bug#9800 # create table t1 (s1 int); insert into t1 values (null),(1); select distinct avg(s1) as x from t1 group by s1 with rollup; drop table t1;
sql/item_sum.cc +6 −1 Original line number Diff line number Diff line Loading @@ -240,6 +240,8 @@ Item_sum_hybrid::Item_sum_hybrid(THD *thd, Item_sum_hybrid *item) case REAL_RESULT: sum= item->sum; break; case STRING_RESULT: // This can happen with ROLLUP. Note that the value is already break; // copied at function call. case ROW_RESULT: default: DBUG_ASSERT(0); Loading Loading @@ -585,7 +587,10 @@ bool Item_sum_distinct::setup(THD *thd) DBUG_ENTER("Item_sum_distinct::setup"); DBUG_ASSERT(tree == 0); /* setup can not be called twice */ /* Setup can be called twice for ROLLUP items. This is a bug. Please add DBUG_ASSERT(tree == 0) here when it's fixed. */ /* Virtual table and the tree are created anew on each re-execution of Loading