[ https://issues.apache.org/jira/browse/AVRO-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17561857#comment-17561857 ]
Kalle Niemitalo commented on AVRO-3568: --------------------------------------- The SchemaNormalization class was missed when support for logical types was added in AVRO-2359, [https://github.com/apache/avro/pull/492], [https://github.com/confluentinc/avro/pull/14]. In contrast, the Java library need not unwrap logical types in SchemaNormalization, because it has a {{LogicalType getLogicalType()}} method right in the Schema class, instead of defining a Schema.Type.LOGICAL constant and a LogicalSchema class. > C# ToParsingForm normalizes logical type to "logical" rather than base type > --------------------------------------------------------------------------- > > Key: AVRO-3568 > URL: https://issues.apache.org/jira/browse/AVRO-3568 > Project: Apache Avro > Issue Type: Bug > Components: csharp > Affects Versions: 1.11.0 > Reporter: Kalle Niemitalo > Priority: Major > Labels: logical > > In the Avro C# library, if Avro.SchemaNormalization.ToParsingForm(Schema) is > given a schema that includes a logical type, then it normalizes that just to > "logical" and not to the base type. The resulting JSON cannot even be parsed > by Avro.Schema.Parse(string). This also makes > SchemaNormalization.ParsingFingerprint return an incorrect fingerprint for > schemas that include logical types. > h2. To reproduce > {code:C#} > using System; > class Program > { > static void Main() > { > var schema = Avro.Schema.Parse( > @"[""int"", {""type"": ""string"", ""logicalType"": ""uuid""}]"); > string pcf = Avro.SchemaNormalization.ToParsingForm(schema); > Console.WriteLine(pcf); > Avro.Schema.Parse(pcf); > } > } > {code} > h2. Expected result > {noformat} > ["int","string"] > {noformat} > h2. Actual result > {noformat} > ["int","logical"] > Unhandled exception. Avro.SchemaParseException: Undefined name: logical at > '[1]' > at Avro.Schema.ParseJson(JToken jtok, SchemaNames names, String encspace) > at Avro.UnionSchema.NewInstance(JArray jarr, PropertyMap props, > SchemaNames names, String encspace) > at Avro.Schema.ParseJson(JToken jtok, SchemaNames names, String encspace) > at Avro.Schema.Parse(String json, SchemaNames names, String encspace) > at Avro.Schema.Parse(String json) > at Program.Main() > {noformat} -- This message was sent by Atlassian Jira (v8.20.10#820010)