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

Doug Cutting updated AVRO-612:
------------------------------

    Attachment: AVRO-612.patch

I think this is a bug, that toString() should preserve as much detail as 
possible.  We might have a separate method that strips a schema down to the 
minimal form needed to describe the data and use that for schemas written to 
files, to optimize things.

Here's a patch that fixes this.

> Schema.toString() strips out field docs
> ---------------------------------------
>
>                 Key: AVRO-612
>                 URL: https://issues.apache.org/jira/browse/AVRO-612
>             Project: Avro
>          Issue Type: Bug
>    Affects Versions: 1.3.3
>            Reporter: David Rosenstrauch
>            Priority: Minor
>             Fix For: 1.4.0
>
>         Attachments: AVRO-612.patch
>
>
> Although avro can successfully parse schema text that contains a "doc" on a 
> Schema.Field, when a Schema containing a field doc is serialized (via 
> Schema.toString()) the doc does not get written.
> The following JUnit test case demonstrates this problem:
> {code:title=TestAvroFieldDocSerialization.java|borderStyle=solid}
> import junit.framework.TestCase;
> import org.apache.avro.Schema;
> public class TestAvroFieldDocSerialization extends TestCase {
>       public void testAvroFieldDocSerialization() {
>               String schemaStr =
>                       "{"+
>                       "       \"name\": \"Rec\","+
>                       "       \"type\": \"record\","+
>                       "       \"fields\" : ["+
>                       "               {\"name\": \"f\", \"type\": \"int\", 
> \"doc\": \"test\"}"+
>                       "       ]"+
>                       "}";
>               Schema schema = Schema.parse(schemaStr);
>               verifyFieldDoc(schema);
>               schemaStr = schema.toString();
>               schema = Schema.parse(schemaStr);
>               verifyFieldDoc(schema);
>       }
>       private void verifyFieldDoc(Schema schema) {
>               Schema.Field field = schema.getField("f");
>               assertEquals("test", field.doc());
>       }
> }
> {code}
> Note that the first call to verifyFieldDoc() succeeds, while the second one 
> fails.  They should both succeed (in my opinion).

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to