[
https://issues.apache.org/jira/browse/HIVE-3976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13754386#comment-13754386
]
Gunther Hagleitner commented on HIVE-3976:
------------------------------------------
This is cool. Looking forward to having a complete decimal data type. I think
it'd be neat to have some sort of spec for this though. Some thoughts that I
had when doing the initial decimal (hope that's helpful):
- The current decimal type is of "mixed scale" and by default has the full
maximum precision (38). Are you going to change this? A smaller default has
benefits, so does a fixed default scale. For performance reasons it would also
be good to keep the default precision below 19. This way it'll fit in a single
long (and we can in future switch to a faster implementation). Fixed scale
means that you can more efficiently compute the basic operations (and it's more
sane than mixed scale). [~ehans] was the one who pointed that out to me.
- HIVE-5022 is related to this and it'd be good to keep any breaking changes
in a single release.
- Have you thought about the rules for precision + scale in arithmetic
operations? Here are some sensible and compliant rules from microsoft:
http://technet.microsoft.com/en-us/library/ms190476.aspx
- Currently when we read data and the read value has a precision greater than
the max we turn that into null. Have you thought about what to do when you read
a decimal that doesn't fit/doesn't conform with the column specification?
Round, truncate, error, or null?
- Propagating precision and scale changes throughout arithmetic expressions
seem difficult. Jason's patch might lay some ground work, but numeric
operations are different from the char/varchar. I think you need to keep track
of them though so you can return them to the user (e.g.: through jdbc/odbc) and
probably also for CTAS.
- Same thing for UDFs. That might have some wrinkles too. I.e.: How do you know
what precision/scale a UDF is going to return?
- I'm not sure whether you need to worry about "insert into" - maybe you can
just write whatever and handle the data when you read it again.
- If you switch everything to fixed scale, I think BinarySortableSerde can be
greatly simplified for decimals.
> Support specifying scale and precision with Hive decimal type
> -------------------------------------------------------------
>
> Key: HIVE-3976
> URL: https://issues.apache.org/jira/browse/HIVE-3976
> Project: Hive
> Issue Type: Improvement
> Components: Query Processor, Types
> Reporter: Mark Grover
> Assignee: Xuefu Zhang
> Attachments: remove_prec_scale.diff
>
>
> HIVE-2693 introduced support for Decimal datatype in Hive. However, the
> current implementation has unlimited precision and provides no way to specify
> precision and scale when creating the table.
> For example, MySQL allows users to specify scale and precision of the decimal
> datatype when creating the table:
> {code}
> CREATE TABLE numbers (a DECIMAL(20,2));
> {code}
> Hive should support something similar too.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira