[ https://issues.apache.org/jira/browse/AVRO-1340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16459837#comment-16459837 ]
ASF GitHub Bot commented on AVRO-1340: -------------------------------------- cutting commented on a change in pull request #298: AVRO-1340: Added Enum Defaults and unit tests. URL: https://github.com/apache/avro/pull/298#discussion_r185267660 ########## File path: doc/src/content/xdocs/idl.xml ########## @@ -152,14 +152,24 @@ protocol MyProtocol { <section id="format_enums"> <title>Defining an Enumeration</title> <p> - Enums are defined in Avro IDL using a syntax similar to C or Java: + Enums are defined in Avro IDL using a syntax similar to C or Java. They may also be defined with an optional default. + In the case that a reader schema is unable to recognize a symbol written by the writer, the reader will fall back to using the defined default value. + Note that this default is only used when an incompatible symbol is read but not if the enum field is missing. + Example Writer Schema: </p> <source> -enum Suit { - SPADES, DIAMONDS, CLUBS, HEARTS -} + enum Shapes { + SQUARE, TRIANGLE, CIRCLE, OVAL + } + </source> + <p>Example Reader Schema</p> + <source> + enum Shapes { + SQUARE, TRIANGLE, CIRCLE + } = CIRCLE Review comment: This needs a semicolon. I don't know if that's the best syntax, but it is what we implemented! ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > use default to allow old readers to specify default enum value when > encountering new enum symbols > ------------------------------------------------------------------------------------------------- > > Key: AVRO-1340 > URL: https://issues.apache.org/jira/browse/AVRO-1340 > Project: Avro > Issue Type: Improvement > Components: spec > Environment: N/A > Reporter: Jim Donofrio > Priority: Minor > > The schema resolution page says: > > if both are enums: > > if the writer's symbol is not present in the reader's enum, then an > error is signalled. > This makes it difficult to use enum's because you can never add a enum value > and keep old reader's compatible. Why not use the default option to refer to > one of enum values so that when a old reader encounters a enum ordinal it > does not recognize, it can default to the optional schema provided one. If > the old schema does not provide a default then the older reader can continue > to fail as it does today. -- This message was sent by Atlassian JIRA (v7.6.3#76005)