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/12 22:51:17 UTC
[jira] [Created] (HIVE-5802) Hive UDF pow limits the second input
to integer when the first input is a decimal
Xuefu Zhang created HIVE-5802:
---------------------------------
Summary: Hive UDF pow limits the second input to integer when the first input is a decimal
Key: HIVE-5802
URL: https://issues.apache.org/jira/browse/HIVE-5802
Project: Hive
Issue Type: Improvement
Components: Types, UDF
Affects Versions: 0.12.0
Reporter: Xuefu Zhang
Assignee: Xuefu Zhang
For example,
{code}
hive> desc test;
OK
i int None
b boolean None
d double None
s string None
dec decimal(5,2) None
hive> explain select pow(dec, 2.5) from test;
FAILED: SemanticException [Error 10014]: Line 1:15 Wrong arguments '2.5': No matching method for class org.apache.hadoop.hive.ql.udf.UDFPower with (decimal(5,2), double). Possible choices: _FUNC_(decimal(65,30), int) _FUNC_(double, double) _FUNC_(double, int)
{code}
This seems too restrictive. MySQL, on the other hand, supports fractional power as the second input.
{code}
mysql> select pow(d, 2.5) from test;
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 | |
+-------+--------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
mysql> select pow(dd, 2.5) from test;
+-------------------+
| pow(dd, 2.5) |
+-------------------+
| 2570.215713318881 |
+-------------------+
1 row in set (0.00 sec)
{code}
Hive should also support this.
--
This message was sent by Atlassian JIRA
(v6.1#6144)