[
https://issues.apache.org/jira/browse/AVRO-1340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16327575#comment-16327575
]
Zoltan Farkas commented on AVRO-1340:
-------------------------------------
[~cutting] I believe the best place to define a fallback symbol is at type
level (enum) ("fallbackSymbol": "SOME SYMBOL")
field default value in my opinion is conceptually something different that a
"enum unknown value"... and I believe it is error prone to assume field default
is the right value when a unknown symbol is received...
here is some example to try to explain what I mean:
Lets have for example a record: Transaction with a enum field transactionType
(type1, type2) with default value type1...
if somebody extends this enum later with type3 it will be problematic since
older versions of Transaction will treat this as type1 which will probably be
really bad...
To not have the above we can do:
Transaction with a enum field transactionType (type1, type2, unknown) with
default value unknown...
This will make extending the enum safer as long as developers use the right
default value every time they use this enum.... which tells me that the right
place this needs to be defined is at the type level...
> 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)