[ https://issues.apache.org/jira/browse/HIVE-5996?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13846067#comment-13846067 ]
Xuefu Zhang commented on HIVE-5996: ----------------------------------- {code} mysql> create table test74 as select sum(l) from test; ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 44 Current database: metastore Query OK, 1 row affected (0.17 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> desc test74; +--------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+---------------+------+-----+---------+-------+ | sum(l) | decimal(41,0) | YES | | NULL | | +--------+---------------+------+-----+---------+-------+ 1 row in set (0.00 sec) {code} It seems that MySQL is using the 22 + p as the output precision, where p is the precision of the input. This is true for other types other than long also. {code} mysql> desc test1; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | i | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+ mysql> create table test75 as select sum(i) from test1; Query OK, 1 row affected (0.19 sec) Records: 1 Duplicates: 0 Warnings: 0 mysql> desc test75; +--------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+---------------+------+-----+---------+-------+ | sum(i) | decimal(32,0) | YES | | NULL | | +--------+---------------+------+-----+---------+-------+ {code} > Query for sum of a long column of a table with only two rows produces wrong > result > ---------------------------------------------------------------------------------- > > Key: HIVE-5996 > URL: https://issues.apache.org/jira/browse/HIVE-5996 > Project: Hive > Issue Type: Bug > Components: UDF > Affects Versions: 0.12.0 > Reporter: Xuefu Zhang > Assignee: Xuefu Zhang > Attachments: HIVE-5996.patch > > > {code} > hive> desc test2; > OK > l bigint None > hive> select * from test2; > OK > 6666666666666666666 > 5555555555555555555 > hive> select sum(l) from test2; > OK > -6224521851487329395 > {code} > It's believed that a wrap-around error occurred. It's surprising that it > happens only with two rows. Same query in MySQL returns: > {code} > mysql> select sum(l) from test; > +----------------------+ > | sum(l) | > +----------------------+ > | 12222222222222222221 | > +----------------------+ > 1 row in set (0.00 sec) > {code} > Hive should accommodate large number of rows. Overflowing with only two rows > is very unusable. -- This message was sent by Atlassian JIRA (v6.1.4#6159)