[ https://issues.apache.org/jira/browse/AVRO-2918?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17569480#comment-17569480 ]
Christophe Le Saec commented on AVRO-2918: ------------------------------------------ As a possible example of polymorphism, i built this [Pull Request|https://github.com/apache/avro/pull/1776]. This use a discriminator when a value is a subtype of declaration (if a field is declared as Person and its real value is Employee for example, or in an array of Person, each Employee instance will use a discriminator). - For schema set, sub schemas will be stored in Names during parsing (parse(JsonNode schema, Names names)). Otherwise, Protocol class does the Job ({_}this is a pb i already faced when building a PR for AVRO-530, allowing using schema before it is define, and so, allowing mutual recursion{_}). - Encoding / decoding are taken into account(need to add more tests) - I didn't test generated code. (_Code is inspired of what was already done with Union_) > Schema polymorphism > ------------------- > > Key: AVRO-2918 > URL: https://issues.apache.org/jira/browse/AVRO-2918 > Project: Apache Avro > Issue Type: New Feature > Components: logical types, misc, spec > Reporter: Jonathan Rapoport > Priority: Critical > Labels: features > Original Estimate: 96h > Remaining Estimate: 96h > > Include the option to use named types as base types for a new schema. Allow > for MRO generation. Field inheritance. > The benefits of this approach include: > * Defining a schema as validation for a certain wire, and so allowing the > receiver to be certain of the structure of the data (this works today). > However, defining an extension of this schema, or certain schemas which can > be normalized to the original schema, but contain additional information, > will not allow it to be sent over the same wire. > * Backwards compatibility through inheritance - you never break the old > schema, thus allowing a long integration period, with no need to recode all > processes familiar with the schema. The new schema will simply inherit the > old one, and only add information. > * Allow for full data control through polymorphism, and the ability to > replace structures within any supported language. -- This message was sent by Atlassian Jira (v8.20.10#820010)