Hive
  1. Hive
  2. HIVE-5655

Hive incorrecly handles divide-by-zero case

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 0.10.0, 0.11.0, 0.12.0
    • Fix Version/s: 0.13.0
    • Component/s: Types
    • Labels:
      None
    • Release Note:
      The behaviour needs to be documented.

      Description

      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.

      hive> select 5/0 from tmp2 limit 1;
      Total MapReduce jobs = 1
      ...
      Total MapReduce CPU Time Spent: 860 msec
      OK
      Infinity
      

      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,

      mysql> select 3/0 from dual;
      +------+
      | 3/0  |
      +------+
      | NULL |
      +------+
      1 row in set (0.00 sec)
      
      1. HIVE-5655.patch
        7 kB
        Xuefu Zhang
      2. HIVE-5655.1.patch
        7 kB
        Xuefu Zhang
      3. HIVE-5655.2.patch
        16 kB
        Xuefu Zhang
      4. HIVE-5655.3.patch
        16 kB
        Xuefu Zhang

        Issue Links

          Activity

          No work has yet been logged on this issue.

            People

            • Assignee:
              Xuefu Zhang
              Reporter:
              Xuefu Zhang
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development