mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
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).
This commit is contained in:
@ -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
|
|||||||
|
|
||||||
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,
|
|||||||
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:
|
||||||
|
Reference in New Issue
Block a user