You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avro.apache.org by "Robert Yokota (Jira)" <ji...@apache.org> on 2022/08/23 05:43:00 UTC

[jira] [Work started] (AVRO-3568) C# ToParsingForm normalizes logical type to "logical" rather than base type

     [ https://issues.apache.org/jira/browse/AVRO-3568?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Work on AVRO-3568 started by Robert Yokota.
-------------------------------------------
> 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, logical types
>    Affects Versions: 1.11.0
>            Reporter: Kalle Niemitalo
>            Assignee: Robert Yokota
>            Priority: Major
>
> 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)