[ 
https://issues.apache.org/jira/browse/AVRO-182?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12776559#action_12776559
 ] 

Doug Cutting commented on AVRO-182:
-----------------------------------

> it seems likely that the schema objects themselves are going to be the same 
> object (in the "==" sense) most of the time

For specific & reflect, we can use == on the classes.  So performance is only 
an issue for generic.

"Most of the time" may not be good enough: we don't want applications that, for 
whatever reason, use different copies of a schema to suffer unduly.  
Schema.equals() showed up in benchmarks as a bottleneck when we used to have a 
HashMap<Schema,Class> cache, and has since been replaced with a name-based 
cache.

Here's a compromise: for generic records, we compare the full, 
namespace-qualified names of the schemas, and, if those match, we assume that 
the data can be compared.  For generated code, we use == on classes.  Patch 
forthcoming.

> hashCode and equals are not consistent with compareTo
> -----------------------------------------------------
>
>                 Key: AVRO-182
>                 URL: https://issues.apache.org/jira/browse/AVRO-182
>             Project: Avro
>          Issue Type: Bug
>          Components: java
>            Reporter: Doug Cutting
>            Assignee: Doug Cutting
>             Fix For: 1.3.0
>
>         Attachments: AVRO-182.patch, AVRO-182.patch
>
>
> Java's specific and generic APIs implement compareTo according to the schema, 
> where some fields might be ignored.  To be consistent, fields that are 
> ignored when comparing for ordering should also be ignored when comparing for 
> equality and for computing hashCodes.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to