It's a bug, basically. We probably haven't noticed it before because merging is significantly rarer than parsing from scratch or serializing.
I've filed https://github.com/google/protobuf/issues/3200 Jon On Thursday, 8 June 2017 09:26:09 UTC+1, Ron Ben-Yosef wrote: > > We've been using proto3 at my workplace for a while now, and noticed some > inconsistency in the merge behavior between the C++ and C# implementations > when it comes to oneof fields. > It seems that in the C++ implementation, if both messages being merged > have the same oneof case set then the field is merged properly (otherwise > the incoming message's field replaces the existing one). > On the other hand, in the C# implementation the incoming message's field > always simply replaces the existing one, even if it's the same field (as > opposed to proper merging if it's the same field, as in the C++ > implementation). > It looks like this is true for the merge functions both in the generated > code and in the protobuf libraries. > > Is there any reason for the different behaviors? Is there any change > planned to make the two implementations' behaviors more consistent? > I think the C++ behavior probably makes a little more sense, but either > way - shouldn't this behavior be consistent between the different > implementations? > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/protobuf. For more options, visit https://groups.google.com/d/optout.
