[ 
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)

Reply via email to