[
https://issues.apache.org/jira/browse/AVRO-3182?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Shawn Wu updated AVRO-3182:
---------------------------
Description:
Version: 1.10.2
When I use Avro in C#, I found Schema.ToString() for union schema will add an
extra *type* property in JSON string.
However, the correct union schema is a JSON array.
This is my test code in C#:
{code:java}
var columnCountSchema =
Schema.Parse("{\"type\":\"record\",\"name\":\"columnCount\",\"namespace\":\"avro.test.header\",\"fields\":[{\"name\":\"columnCount\",\"type\":\"int\"}]}");
var errorMessageSchema =
Schema.Parse("{\"type\":\"record\",\"name\":\"errorMessage\",\"namespace\":\"avro.test.header\",\"fields\":[{\"name\":\"errorMessage\",\"type\":[\"string\",\"null\"]}]}");
var schema = Schema.Parse($"[{columnCountSchema},{errorMessageSchema}]");
Console.WriteLine(schema.ToString());{code}
The actual output:
{code:java}
{"type":[{"type":"record","name":"columnCount","namespace":"avro.test.header","fields":[{"name":"columnCount","type":"int"}]},{"type":"record","name":"errorMessage","namespace":"avro.test.header","fields":[{"name":"errorMessage","type":["string","null"]}]}]}
{code}
The expected output:
{code:java}
[{"type":"record","name":"columnCount","namespace":"avro.test.header","fields":[{"name":"columnCount","type":"int"}]},{"type":"record","name":"errorMessage","namespace":"avro.test.header","fields":[{"name":"errorMessage","type":["string","null"]}]}]
{code}
was:
Version: 1.10.2
When I use Avro in C#, I found Schema.ToString() for union schema will add an
extra *type* property in JSON string.
However, the correct union schema is a JSON array.
This is my test code in C#:
{code:java}
var columnCountSchema =
Schema.Parse("{\"type\":\"record\",\"name\":\"columnCount\",\"namespace\":\"avro.test.header\",\"fields\":[{\"name\":\"columnCount\",\"type\":\"int\"}]}");
var errorMessageSchema =
Schema.Parse("{\"type\":\"record\",\"name\":\"errorMessage\",\"namespace\":\"avro.test.header\",\"fields\":[{\"name\":\"errorMessage\",\"type\":[\"string\",\"null\"]}]}");
var schema = Schema.Parse($"[{columnCountSchema},{errorMessageSchema}]");
Console.WriteLine(schema.ToString());{code}
The actual output:
{code:java}
{"type":[{"type":"record","name":"columnCount","namespace":"avro.test.header","fields":[{"name":"columnCount","type":"int"}]},{"type":"record","name":"errorMessage","namespace":"avro.test.header","fields":[{"name":"errorMessage","type":["string","null"]}]}]}
{code}
The expected output:
{code:java}
[{"type":"record","name":"columnCount","namespace":"avro.test.header","fields":[{"name":"columnCount","type":"int"}]},{"type":"record","name":"errorMessage","namespace":"avro.test.header","fields":[{"name":"errorMessage","type":["string","null"]}]}]
{code}
> The result of Schema.ToString() for Union Schema is wrong in C#
> ---------------------------------------------------------------
>
> Key: AVRO-3182
> URL: https://issues.apache.org/jira/browse/AVRO-3182
> Project: Apache Avro
> Issue Type: Bug
> Components: csharp
> Affects Versions: 1.10.2
> Reporter: Shawn Wu
> Priority: Critical
>
> Version: 1.10.2
>
> When I use Avro in C#, I found Schema.ToString() for union schema will add an
> extra *type* property in JSON string.
> However, the correct union schema is a JSON array.
>
> This is my test code in C#:
> {code:java}
> var columnCountSchema =
> Schema.Parse("{\"type\":\"record\",\"name\":\"columnCount\",\"namespace\":\"avro.test.header\",\"fields\":[{\"name\":\"columnCount\",\"type\":\"int\"}]}");
> var errorMessageSchema =
> Schema.Parse("{\"type\":\"record\",\"name\":\"errorMessage\",\"namespace\":\"avro.test.header\",\"fields\":[{\"name\":\"errorMessage\",\"type\":[\"string\",\"null\"]}]}");
> var schema = Schema.Parse($"[{columnCountSchema},{errorMessageSchema}]");
> Console.WriteLine(schema.ToString());{code}
> The actual output:
> {code:java}
> {"type":[{"type":"record","name":"columnCount","namespace":"avro.test.header","fields":[{"name":"columnCount","type":"int"}]},{"type":"record","name":"errorMessage","namespace":"avro.test.header","fields":[{"name":"errorMessage","type":["string","null"]}]}]}
> {code}
> The expected output:
> {code:java}
> [{"type":"record","name":"columnCount","namespace":"avro.test.header","fields":[{"name":"columnCount","type":"int"}]},{"type":"record","name":"errorMessage","namespace":"avro.test.header","fields":[{"name":"errorMessage","type":["string","null"]}]}]
> {code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)