hive-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergio Peña (JIRA) <j...@apache.org>
Subject [jira] [Commented] (HIVE-7373) Hive should not remove trailing zeros for decimal numbers
Date Thu, 21 Aug 2014 21:12:12 GMT

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

Sergio Peña commented on HIVE-7373:
-----------------------------------

It is true only if the calculations are made between the fields and/or using cast().
For instance:
{noformat}
0: jdbc:hive2://localhost:10000> select a, b, a*b, a/b, a+b, a-b, a*a from decimal;
+--------+-------+----------+-------+--------+--------+-----------+--+
|   a    |   b   |   _c2    |  _c3  |  _c4   |  _c5   |    _c6    |
+--------+-------+----------+-------+--------+--------+-----------+--+
| 3.140  | 1.00  | 3.14000  | 3.14  | 4.140  | 2.140  | 9.859600  |
+--------+-------+----------+-------+--------+--------+-----------+--+
{noformat}

I've just tested a calculation using constants, and they're not working as expected
- select 3.140 * 1.00;   <-- You need to use a cast() on these values in order to get 
  the correct results.

> Hive should not remove trailing zeros for decimal numbers
> ---------------------------------------------------------
>
>                 Key: HIVE-7373
>                 URL: https://issues.apache.org/jira/browse/HIVE-7373
>             Project: Hive
>          Issue Type: Bug
>          Components: Types
>    Affects Versions: 0.13.0, 0.13.1
>            Reporter: Xuefu Zhang
>            Assignee: Sergio Peña
>              Labels: TODOC14
>             Fix For: 0.14.0
>
>         Attachments: HIVE-7373.1.patch, HIVE-7373.2.patch, HIVE-7373.3.patch, HIVE-7373.4.patch,
HIVE-7373.5.patch, HIVE-7373.6.patch, HIVE-7373.6.patch
>
>
> Currently Hive blindly removes trailing zeros of a decimal input number as sort of standardization.
This is questionable in theory and problematic in practice.
> 1. In decimal context,  number 3.140000 has a different semantic meaning from number
3.14. Removing trailing zeroes makes the meaning lost.
> 2. In a extreme case, 0.0 has (p, s) as (1, 1). Hive removes trailing zeros, and then
the number becomes 0, which has (p, s) of (1, 0). Thus, for a decimal column of (1,1), input
such as 0.0, 0.00, and so on becomes NULL because the column doesn't allow a decimal number
with integer part.
> Therefore, I propose Hive preserve the trailing zeroes (up to what the scale allows).
With this, in above example, 0.0, 0.00, and 0.0000 will be represented as 0.0 (precision=1,
scale=1) internally.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Mime
View raw message