You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Xuefu Zhang (JIRA)" <ji...@apache.org> on 2013/11/23 16:24:35 UTC
[jira] [Created] (HIVE-5878) Hive standard avg UDAF returns double
as the return type for some exact input types
Xuefu Zhang created HIVE-5878:
---------------------------------
Summary: Hive standard avg UDAF returns double as the return type for some exact input types
Key: HIVE-5878
URL: https://issues.apache.org/jira/browse/HIVE-5878
Project: Hive
Issue Type: Bug
Components: Types, UDF
Affects Versions: 0.12.0
Reporter: Xuefu Zhang
Assignee: Xuefu Zhang
For standard, no-partial avg result, hive currently returns double as the result type.
{code}
hive> desc test;
OK
d int None
Time taken: 0.051 seconds, Fetched: 1 row(s)
hive> explain select avg(`d`) from test;
...
Reduce Operator Tree:
Group By Operator
aggregations:
expr: avg(VALUE._col0)
bucketGroup: false
mode: mergepartial
outputColumnNames: _col0
Select Operator
expressions:
expr: _col0
type: double
{code}
However, exact types including integers and decimal should yield exact type. Here is what MySQL does:
{code}
mysql> desc test;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| i | int(11) | YES | | NULL | |
| b | tinyint(1) | YES | | NULL | |
| d | double | YES | | NULL | |
| s | varchar(5) | YES | | NULL | |
| dd | decimal(5,2) | YES | | NULL | |
+-------+--------------+------+-----+---------+-------+
mysql> desc test62;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| sum_t | decimal(14,4) | YES | | NULL | |
+-------+---------------+------+-----+---------+-------+
1 row in set (0.00 sec)
{code}
--
This message was sent by Atlassian JIRA
(v6.1#6144)