[ https://issues.apache.org/jira/browse/HIVE-15331?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jason Dere updated HIVE-15331: ------------------------------ Resolution: Fixed Fix Version/s: 2.2.0 Release Note: The resulting precision/scale of decimal arithmetic has been changed in the case where the precision/scale exceeds the maximum precision of 38. When reducing the precision/scale down to the Hive limit of 38, the new behavior is to reduce the scale to preserve the integer portion of the precision, while leaving a minimum of 6 digits for the scale. The previous behavior was to always shrink the integer portion of the precision first before the scale. Status: Resolved (was: Patch Available) Committed to master > Decimal multiplication with high precision/scale often returns NULL > ------------------------------------------------------------------- > > Key: HIVE-15331 > URL: https://issues.apache.org/jira/browse/HIVE-15331 > Project: Hive > Issue Type: Bug > Components: Types > Reporter: Jason Dere > Assignee: Jason Dere > Fix For: 2.2.0 > > Attachments: HIVE-15331.1.patch, HIVE-15331.2.patch, > HIVE-15331.3.patch > > > {noformat} > create temporary table dec (a decimal(38,18)); > insert into dec values(100.0); > hive> select a*a from dec; > OK > NULL > Time taken: 0.165 seconds, Fetched: 1 row(s) > {noformat} > Looks like the reason is because the result of decimal(38,18) * > decimal(38,18) only has 2 digits of precision for integers: > {noformat} > hive> set hive.explain.user=false; > hive> explain select a*a from dec; > OK > STAGE DEPENDENCIES: > Stage-0 is a root stage > STAGE PLANS: > Stage: Stage-0 > Fetch Operator > limit: -1 > Processor Tree: > TableScan > alias: dec > Select Operator > expressions: (a * a) (type: decimal(38,36)) > outputColumnNames: _col0 > ListSink > Time taken: 0.039 seconds, Fetched: 15 row(s) > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)