You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hive.apache.org by "Edward Capriolo (JIRA)" <ji...@apache.org> on 2013/10/27 02:14:30 UTC

[jira] [Commented] (HIVE-5655) Hive incorrecly handles divide-by-zero case

    [ https://issues.apache.org/jira/browse/HIVE-5655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13806197#comment-13806197 ] 

Edward Capriolo commented on HIVE-5655:
---------------------------------------

+1 . [~xuefuz] We(I) recently committed a new system that runs udf tests through the operator chain. Maybe you want to base your junit test on that.

see  ./ql/src/test/org/apache/hadoop/hive/ql/testutil/BaseScalarUdfTest.java

> Hive incorrecly handles divide-by-zero case
> -------------------------------------------
>
>                 Key: HIVE-5655
>                 URL: https://issues.apache.org/jira/browse/HIVE-5655
>             Project: Hive
>          Issue Type: Improvement
>          Components: Types
>    Affects Versions: 0.10.0, 0.11.0, 0.12.0
>            Reporter: Xuefu Zhang
>            Assignee: Xuefu Zhang
>         Attachments: HIVE-5655.1.patch, HIVE-5655.patch
>
>
> Unlike other databases, Hive currently has only one mode (default mode) regarding error handling, in which NULL value is returned. However, in case of divide-by-zero, Hive demonstrated a different behavior.
> {code}
> hive> select 5/0 from tmp2 limit 1;
> Total MapReduce jobs = 1
> ...
> Total MapReduce CPU Time Spent: 860 msec
> OK
> Infinity
> {code}
> The correct behaviour should be Hive returning NULL instead in order to be consistent w.r.t error handling. (BTW, the same situation is handled corrected for decimal type.)
> MySQL has server modes control the behaviour. By default, NULL is returned. For instance,
> {code}
> mysql> select 3/0 from dual;
> +------+
> | 3/0  |
> +------+
> | NULL |
> +------+
> 1 row in set (0.00 sec)
> {code}



--
This message was sent by Atlassian JIRA
(v6.1#6144)