[
https://issues.apache.org/jira/browse/PARQUET-1191?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Nandor Kollar reassigned PARQUET-1191:
--------------------------------------
Assignee: Nandor Kollar
> Type.hashCode() takes originalType into account but Type.equals() does not
> --------------------------------------------------------------------------
>
> Key: PARQUET-1191
> URL: https://issues.apache.org/jira/browse/PARQUET-1191
> Project: Parquet
> Issue Type: Bug
> Reporter: Gabor Szadovszky
> Assignee: Nandor Kollar
>
> Taking originalType into account in Type.hashCode() but ignoring it in
> Type.equals() is inconsistent and violates hashCode-equals contract.
> If two Type instances that are equal according to equals() but have different
> logical types were ever put in a hash map, then both of the following cases
> are possible:
> * The two instances may accidentally have the same hash, which is consistent
> with the equals() method but is pure coincidence and has a very low
> probablility.
> * The two instances may have different hashes and end up in different buckets
> of a hash map, leading to a situation where we can't find a value in the hash
> map despite that it's equals() would return true.
> We should decide whether originalType is needed for an equality check or not.
> If it is, then it should be added to equals(). Otherwise it should be removed
> from hashCode().
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)