You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@avro.apache.org by "KalleOlaviNiemitalo (via GitHub)" <gi...@apache.org> on 2023/08/18 05:59:45 UTC

[GitHub] [avro] KalleOlaviNiemitalo commented on a diff in pull request #2448: AVRO-3833: [Spec] Clarify usage of names and aliases

KalleOlaviNiemitalo commented on code in PR #2448:
URL: https://github.com/apache/avro/pull/2448#discussion_r1298037348


##########
doc/content/en/docs/++version++/Specification/_index.md:
##########
@@ -259,13 +259,29 @@ Complex types (`record`, `enum`, `array`, `map`, `fixed`) have no namespace, but
 
 A schema or protocol may not contain multiple definitions of a fullname. Further, a name must be defined before it is used ("before" in the depth-first, left-to-right traversal of the JSON parse tree, where the types attribute of a protocol is always deemed to come "before" the messages attribute.)
 
-### Aliases
+### Aliases {#aliases}
 Named types and fields may have aliases. An implementation may optionally use aliases to map a writer's schema to the reader's. This facilitates both schema evolution as well as processing disparate datasets.
 
 Aliases function by re-writing the writer's schema using aliases from the reader's schema. For example, if the writer's schema was named "Foo" and the reader's schema is named "Bar" and has an alias of "Foo", then the implementation would act as though "Foo" were named "Bar" when reading. Similarly, if data was written as a record with a field named "x" and is read as a record with a field named "y" with alias "x", then the implementation would act as though "x" were named "y" when reading.
 
 A type alias may be specified either as a fully namespace-qualified, or relative to the namespace of the name it is an alias for. For example, if a type named "a.b" has aliases of "c" and "x.y", then the fully qualified names of its aliases are "a.c" and "x.y".
 
+Aliases are alternative names, and thus subject to the same uniqueness constraints as names. Aliases should be valid names, but this is not required: any string is accepted as an alias. This allows schema evolution to correct illegal names in old schemata.

Review Comment:
   My understanding from <https://avro.apache.org/docs/1.11.1/specification/#aliases> is that aliases cannot be referenced in a schema; they are only used for reading data that was written using an old schema that used those strings as names.  But this conversion requires parsing the old schema, so if the names in that are not valid, then it can only be done with a library that tolerates such invalid names (in addition to tolerating those strings as aliases in the new schema).



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscribe@avro.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org