Return-Path: X-Original-To: apmail-avro-dev-archive@www.apache.org Delivered-To: apmail-avro-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 49404118A2 for ; Tue, 19 Aug 2014 22:19:26 +0000 (UTC) Received: (qmail 15948 invoked by uid 500); 19 Aug 2014 22:19:22 -0000 Delivered-To: apmail-avro-dev-archive@avro.apache.org Received: (qmail 15878 invoked by uid 500); 19 Aug 2014 22:19:22 -0000 Mailing-List: contact dev-help@avro.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@avro.apache.org Delivered-To: mailing list dev@avro.apache.org Received: (qmail 15793 invoked by uid 99); 19 Aug 2014 22:19:22 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 19 Aug 2014 22:19:22 +0000 Date: Tue, 19 Aug 2014 22:19:22 +0000 (UTC) From: "Doug Cutting (JIRA)" To: dev@avro.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (AVRO-680) Allow for non-string keys MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/AVRO-680?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14102946#comment-14102946 ] Doug Cutting commented on AVRO-680: ----------------------------------- > If we make isMap return false and isArray return true, then the above code would fail while typecasting Map to a Collection. Yes, but if we *don't* make isMap return false and isArray return true then it will render invalid JSON, since JSON only permits string-keyed maps (a.k.a objects). > Same holds true for #validate() But here, without the change, validate will not validate keys of non-string maps, since they're assumed to be strings. > Ditto, for #induce(): And without the change it won't generate the correct schema. So in each case, making the change would cause them to throw exceptions, while not making it would just cause them silently do the wrong thing. > 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, isMap_Call_Hierarchy.png, non_string_map_keys.zip, non_string_map_keys2.zip, non_string_map_keys3.zip, non_string_map_keys4.patch, non_string_map_keys5.patch, non_string_map_keys6.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)