Loading mysql-test/r/func_group.result +9 −0 Original line number Diff line number Diff line Loading @@ -733,6 +733,15 @@ one 2 two 2 three 1 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; create table t1(f1 datetime); insert into t1 values (now()); create table t2 select f2 from (select max(now()) f2 from t1) a; Loading mysql-test/r/show_check.result +3 −1 Original line number Diff line number Diff line Loading @@ -250,9 +250,11 @@ type_bool type_tiny type_short type_mediumint type_bigint type_decimal type_nume drop table t1; create table t1 (a int not null); create table t2 select max(a) from t1; Warnings: Warning 1263 Data truncated; NULL supplied to NOT NULL column 'max(a)' at row 1 show columns from t2; Field Type Null Key Default Extra max(a) bigint(20) YES NULL max(a) int(11) 0 drop table t1,t2; create table t1 (c decimal, d double, f float, r real); show columns from t1; Loading mysql-test/t/func_group.test +9 −0 Original line number Diff line number Diff line Loading @@ -474,6 +474,15 @@ INSERT INTO t1 VALUES select val, count(*) from t1 group by val; 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; # # Bug 7833: Wrong datatype of aggregate column is returned Loading sql/sql_select.cc +9 −0 Original line number Diff line number Diff line Loading @@ -4773,6 +4773,15 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, item->name,table,item_sum->decimals); case Item_sum::UNIQUE_USERS_FUNC: 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: switch (item_sum->result_type()) { case REAL_RESULT: Loading Loading
mysql-test/r/func_group.result +9 −0 Original line number Diff line number Diff line Loading @@ -733,6 +733,15 @@ one 2 two 2 three 1 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; create table t1(f1 datetime); insert into t1 values (now()); create table t2 select f2 from (select max(now()) f2 from t1) a; Loading
mysql-test/r/show_check.result +3 −1 Original line number Diff line number Diff line Loading @@ -250,9 +250,11 @@ type_bool type_tiny type_short type_mediumint type_bigint type_decimal type_nume drop table t1; create table t1 (a int not null); create table t2 select max(a) from t1; Warnings: Warning 1263 Data truncated; NULL supplied to NOT NULL column 'max(a)' at row 1 show columns from t2; Field Type Null Key Default Extra max(a) bigint(20) YES NULL max(a) int(11) 0 drop table t1,t2; create table t1 (c decimal, d double, f float, r real); show columns from t1; Loading
mysql-test/t/func_group.test +9 −0 Original line number Diff line number Diff line Loading @@ -474,6 +474,15 @@ INSERT INTO t1 VALUES select val, count(*) from t1 group by val; 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; # # Bug 7833: Wrong datatype of aggregate column is returned Loading
sql/sql_select.cc +9 −0 Original line number Diff line number Diff line Loading @@ -4773,6 +4773,15 @@ Field *create_tmp_field(THD *thd, TABLE *table,Item *item, Item::Type type, item->name,table,item_sum->decimals); case Item_sum::UNIQUE_USERS_FUNC: 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: switch (item_sum->result_type()) { case REAL_RESULT: Loading