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

Doug Cutting commented on AVRO-680:
-----------------------------------

Thanks!  This is looking good.

A few minor improvements still required:
 - Why do we need to add GenericDatumWriter#getRecordState()?  Can't we just 
call getData().getRecordState()?  If we add a new protected method then we need 
to add javadoc, but better yet let's not add it if we don't need it.
 - writeNonStringMap and writeNonStringMapEntry should have comments explaining 
that they're writing an array of records.  In general a small comment at each 
substantially modified point describing this strategy would help folks reading 
the code to understand what's going on, since it's not what one might expect.  
Just something like, "encode maps with non-string keys as array of key/value 
pair records"
 - getNameForNonStringMapRecord should be passed the value of 
Schema#getFullName() for the key and value schemas, not the class name.  This 
will permit non-Java implementations of non-string maps.  E.g., we should hash 
"int", not "java.lang.Integer" as the name.

> Allow for non-string keys
> -------------------------
>
>                 Key: AVRO-680
>                 URL: https://issues.apache.org/jira/browse/AVRO-680
>             Project: Avro
>          Issue Type: Improvement
>    Affects Versions: 1.7.6, 1.7.7
>            Reporter: Jeremy Hanna
>         Attachments: AVRO-680.patch, non_string_map_keys.zip, 
> non_string_map_keys2.zip, non_string_map_keys3.zip, non_string_map_keys4.patch
>
>
> Based on an email thread back in April, Doug Cutting proposed a possible 
> solution for having non-string keys:
> Stu Hood wrote:
> > I can understand the reasoning behind AVRO-9, but now I need to look for an 
> > alternative to a 'map' that will allow me to store an association of bytes 
> > keys to values.
> A map of Foo has the same binary format as an array of records, each
> with a string field and a Foo field.  So an application can use an array
> schema similar to this to represent map-like structures with, e.g.,
> non-string keys.
> Perhaps we could establish standard properties that indicate that a
> given array of records should be represented in a map-like way if
> possible?  E.g.,:
> {"type": "array", "isMap": true, "items": {"type":"record", ...}}
> Doug



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to