[
https://issues.apache.org/jira/browse/HIVE-8745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14199629#comment-14199629
]
Jason Dere commented on HIVE-8745:
----------------------------------
Looking into this, it's not just HiveDecimal.equals() - BinarySortableSerde is
serializing decimals in such a way that 1.1 is not the same as 1.10. This is
why we're seeing the difference in the join behavior.
It looks like this difference in behavior is due to HIVE-7373. Before
HiveDecimal was automatically trimming the trailing zeros and so 1.1 and 1.10
would both be represented as 1.1. Now that they have different internal
representations, there seem to be some unexpected differences in behavior like
we're seeing with BinarySortableSerde. We may want to consider backing out the
changes from HIVE-7373.
If we were to try to fix this issue without reverting HIVE-7373, we would still
have to trim trailing zeros within BinarySortableSerde so that 1.1 == 1.10. If
we do this this will result in having the trimmed behavior that was deemed
undesirable in HIVE-7373, but which would only exhibit itself when
BinarySortableSerde is used (joins), which seems a bit odd.
Thoughts?
> Joins on decimal keys return different results whether they are run as reduce
> join or map join
> ----------------------------------------------------------------------------------------------
>
> Key: HIVE-8745
> URL: https://issues.apache.org/jira/browse/HIVE-8745
> Project: Hive
> Issue Type: Bug
> Affects Versions: 0.14.0
> Reporter: Gunther Hagleitner
> Assignee: Jason Dere
> Priority: Critical
> Attachments: join_test.q
>
>
> See attached .q file to reproduce. The difference seems to be whether
> trailing 0s are considered the same value or not.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)