Commit 47f8a473 authored by unknown's avatar unknown

A fix (bug #5615 type of aggregate function column wrong when using group by).


mysql-test/r/func_group.result:
  test case (bug #5615 type of aggregate function column wrong when using group by)
mysql-test/t/func_group.test:
  test case (bug #5615 type of aggregate function column wrong when using group by)
sql/sql_select.cc:
  A fix (bug #5615 type of aggregate function column wrong when using group by):
    should create a temporary field of the proper type in case of 
    MIN|MAX(field).
parent 1073271b
...@@ -719,3 +719,12 @@ one 2 ...@@ -719,3 +719,12 @@ one 2
two 2 two 2
three 1 three 1
drop table t1; drop table t1;
create table t1(a int, b datetime);
insert into t1 values (1, NOW()), (2, NOW());
create table t2 select MAX(b) from t1 group by a;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
`MAX(b)` datetime default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
drop table t1, t2;
...@@ -458,3 +458,13 @@ INSERT INTO t1 VALUES ...@@ -458,3 +458,13 @@ INSERT INTO t1 VALUES
select val, count(*) from t1 group by val; select val, count(*) from t1 group by val;
drop table t1; drop table t1;
#
# Bug #5615: type of aggregate function column wrong when using group by
#
create table t1(a int, b datetime);
insert into t1 values (1, NOW()), (2, NOW());
create table t2 select MAX(b) from t1 group by a;
show create table t2;
drop table t1, t2;
...@@ -4744,6 +4744,15 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, ...@@ -4744,6 +4744,15 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type,
item->name,table,item_sum->decimals); item->name,table,item_sum->decimals);
case Item_sum::UNIQUE_USERS_FUNC: case Item_sum::UNIQUE_USERS_FUNC:
return new Field_long(9,maybe_null,item->name,table,1); return new Field_long(9,maybe_null,item->name,table,1);
case Item_sum::MIN_FUNC:
case Item_sum::MAX_FUNC:
if (item_sum->args[0]->type() == Item::FIELD_ITEM)
{
*from_field= ((Item_field*) item_sum->args[0])->field;
return create_tmp_field_from_field(thd, *from_field, item, table,
modify_item, convert_blob_length);
}
/* fall through */
default: default:
switch (item_sum->result_type()) { switch (item_sum->result_type()) {
case REAL_RESULT: case REAL_RESULT:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment