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

Matt Massie commented on AVRO-18:
---------------------------------

I'd like to suggest that we use this enum with union in order support 
discriminant unions much like xdr.

For example, in XDR, the syntax for a union is..

<code>
enum my_enum {
  FOO,
  BAR,
  BAZ
};

union my_union switch (my_enum id){
   case FOO:
      string foo<>;
   case BAR:
      double bar;
   case BAZ:
      short baz;
   default:
      void
}
</code>

Those enums are important in order to know the type of object being 
(de)serialized in the union.  

Looking at the "interop.js" file in the current Avro distro, I see the union 
field looks like

<code>
"unionField": ["boolean", "double", {"type":"array","items": "bytes"}],
</code>

which as far as I can tell, means that the union field can be a boolean, double 
or array.  How can you discriminate one from the other without a discriminant?

Maybe we  need something like the following...

<code>
{"name": "Foo", "type": "enum", "values": ["a", "b", "c"]}

{"type": "union", "name": "my_union", "discriminant": "Foo",
  "schemas": {
     "a": "boolean",
     "b": "double",
     "c": {"type": "array", "items": "bytes"}
  }.
  "default": "void"
}
</code>

... or something similar?


      

  



> add enum type
> -------------
>
>                 Key: AVRO-18
>                 URL: https://issues.apache.org/jira/browse/AVRO-18
>             Project: Avro
>          Issue Type: New Feature
>          Components: spec
>            Reporter: Doug Cutting
>
> Avro schemas should support enum types.

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