[
https://issues.apache.org/jira/browse/AVRO-1340?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16137220#comment-16137220
]
Zoltan Farkas commented on AVRO-1340:
-------------------------------------
[~cutting] what do you thing about the following:
1) Symbol aliases example to correct misspellings. (similar to field
aliasses):
v1:
{code}
{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUS"]
}
{code}
v2:
{code}
{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUB”]
“symbolAliasses” : {
“CLUB” : [“CLUS”]
}
}
{code}
v3:
{code}
{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS”]
“symbolAliasses” : {
“CLUBS” : [“CLUS”, “CLUB”]
}
}
{code}
sample conversion:
v1: { “val” : “CLUS”} <-> v3: { “val” : “CLUBS” }
the following enum schema would be illegal:
{code}
{ "type": "enum",
"name": "Suit",
"symbols" : ["SPADES", "HEARTS", "DIAMONDS", "CLUBS”]
“symbolAliasses” : {
“CLUBS” : [“CLUS”, “CLUB”, “SPADES”]
}
}
{code}
since it contains a duplicate definition. (“SPADES”, “CLUBS”)
2) Evolution example with a fallback symbol:
V1:
{code}
{ "type": "enum",
"name": "Suit",
"symbols" : [“UNKNOWN”, ”SPADES", "HEARTS", "DIAMONDS", "CLUBS”],
“symbolAliasses” : {
“CLUBS” : [“CLUS”, “CLUB”]
},
“fallbackSymbol” : “UNKNOWN”
}
{code}
and a record using the above enum:
{code}
{
"type": "record",
"name": “Example”,
"fields" : [
{"name": “enumValue”,
"type": “Suit”,
“default” : “SPADES”},
]
}
{code}
V2:
{code}
{ "type": "enum",
"name": "Suit",
"symbols" : [“UNKNOWN”, ”SPADES", "HEARTS", "DIAMONDS", "CLUBS”, “NEWVAL”]
“symbolAliasses” : {
“CLUBS” : [“CLUS”, “CLUB”],
},
“fallbackSymbol” : “UNKNOWN”
}
{code}
sample conversion:
v2 : { “enumValue” : “NEWVAL” } -> v1 : {“enumValue” : “UNKNOWN”}
v1: {“enumValue” : “UNKNOWN”} -> v2 : {“enumValue” : “UNKNOWN”}
would this be acceptable?
> 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
(v6.4.14#64029)