Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
The current decimal implementation does not limit the precision of the numbers. This has a number of drawbacks. A maximum precision would allow us to:
- Have SerDes/filformats store decimals more efficiently
- Speed up processing by implementing operations w/o generating java BigDecimals
- Simplify extending the datatype to allow for decimal(p) and decimal(p,s)
- Write a more efficient BinarySortable SerDe for sorting/grouping/joining
Exact numeric datatype are typically used to represent money, so if the limit is high enough it doesn't really become an issue.
A typical representation would pack 9 decimal digits in 4 bytes. So, with 2 longs we can represent 36 digits - which is what I propose as the limit.
Final thought: It's easier to restrict this now and have the option to do the things above than to try to do so once people start using the datatype.
Attachments
Attachments
Issue Links
- blocks
-
HIVE-4320 Consider extending max limit for precision to 38
- Closed
-
HIVE-4120 Implement decimal encoding for ORC
- Closed
- is blocked by
-
HIVE-4128 Support avg(decimal)
- Closed
- is related to
-
HIVE-2693 Add DECIMAL data type
- Closed
- relates to
-
HIVE-5565 Limit Hive decimal type maximum precision and scale to 38
- Resolved