Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
-
None
Description
See HIVE-13957.
The default precision and scale for the implicit decimal cast are max,max, ie 38,38 38,18. Those don't do what the code may assume they do. All the values >=1 Some values may become invalid and precision-scale enforcement automatically converts them to null.
We need to
1) Validate when this happens in/after the conversion code and bail;
2) Or, derive precision and scale from the constants themselves so they all fit, instead;
3) Or, derive it from the type of whatever caused the conversion in the first place (e.g. IN column decimal); however, this could be function-specific (e.g. IN just needs equality, BETWEEN would need at least one extra digit, arithmetic, if this ever happens, would need everything, etc.);
4) Something else?