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.