[ https://issues.apache.org/jira/browse/AVRO-1827?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15629421#comment-15629421 ]
Karel Fuka commented on AVRO-1827: ---------------------------------- Thanks Michal. The latest patch I have attached is in Unix convention, so to apply it is easy. Just go to a directory where your patch is and apply it: {code} (git clone https://github.com/apache/avro.git; cd avro; patch -p0 < ../AVRO-1827.patch) {code} > Handling correctly optional fields when converting Protobuf to Avro > ------------------------------------------------------------------- > > Key: AVRO-1827 > URL: https://issues.apache.org/jira/browse/AVRO-1827 > Project: Avro > Issue Type: Improvement > Affects Versions: 1.7.7, 1.8.0 > Reporter: Jakub Kahovec > Attachments: AVRO-1827.patch, AVRO-1827.patch, AVRO-1827.patch, > AVRO-1827.patch > > > Hello, > as of the current implementation of converting protobuf files into avro > format, protobuf optional fields are being given default values in the avro > schema if not specified explicitly. > So for instance when the protobuf field is defined as > {quote} > optional int64 fieldInt64 = 1; > {quote} > in the avro schema it appears as > {quote} > "name" : "fieldInt64", > "type" : "long", > "default" : 0 > {quote} > The problem with this implementation is that we are losing information about > whether the field was present or not in the original protobuf, as when we ask > for this field's value in avro we will be given the default value. > What I'm proposing instead is that if the field in the protobuf is defined as > optional and has no default value then the generated avro schema type will us > a union comprising the matching type and null type with default value null. > It is going to look like this: > {quote} > "name" : "fieldIn64", > "type" : [ "null", "long" ], > "default" : null > {quote} > I'm aware that is a breaking change but I think that is the proper way how to > handle optional fields. > I've also created a patch which fixes the conversion > Jakub -- This message was sent by Atlassian JIRA (v6.3.4#6332)