Oh, I am talking about the binary format in particular. In that scenario it's important for unknown enum values to be handled in some way, since you might want to add a new enum value but it should still be parseable by older binaries.
On Tue, Mar 19, 2019 at 4:14 PM Michael Powell <[email protected]> wrote: > > > On Tuesday, March 19, 2019 at 6:50:37 PM UTC-4, Adam Cozzette wrote: >> >> Not exactly, by unknown enum value I mean an enum value that doesn't >> appear in the enum definition. For example let's say your enum has only >> values 0, 1, and 2 but you parse a 3. This could happen if the message was >> serialized by another binary using a newer version of the schema. Proto2 >> will store unknown enum values in the unknown field set whereas proto3 will >> just store them normally in the field. >> > > I think in the above scenario, that would likely break whether v2 or v3, > but I could be wrong. > > I would have to re-read the language guide. You can parse an ordinal value > where the Enumeration was expected? > > i.e. UNKNOWN = 0; > > Would accept 0 or UNKNOWN? > > Are we talking descriptor / protobuf specification level? Or binary level? > > I do not read any biases where unexpected ordinal values are concerned, > but I would expect that it fail any sort of verification. > > That being said, specification versioning is a concern regardless of > whether v2 or v3, I think, and not just with Protocol Buffers. It's a > concern for this type of framework, regardless. > > On Thu, Mar 14, 2019 at 7:29 PM Jason Huang <[email protected]> wrote: >> >>> thanks for your reply , as for the `unknown enum values` , do you mean >>> the case of a unseted enum field ? >>> >>> On Friday, 15 March 2019 02:12:31 UTC+8, Adam Cozzette wrote: >>>> >>>> Going from proto3 to proto2 should be fine. There are some slight >>>> differences but I can't think of any major problems. The only thing that >>>> comes to mind is that proto2 handles unknown enum values a little bit >>>> differently from proto3. I doubt that would be a problem but if you want to >>>> be extra cautious you could double-check that you're not storing any >>>> unknown enum values. >>>> >>>> However, there is no need to downgrade to version 2.6.1 and if anything >>>> that would only introduce bugs and make the code slower. The proto2 >>>> semantics are still fully supported in all versions going forward, so all >>>> you have to do is put syntax = "proto2"; at the top of your .proto >>>> files. You can stick with 3.6.1 or even upgrade to any newer version. >>>> >>>> On Thu, Mar 14, 2019 at 10:21 AM Jason Huang <[email protected]> >>>> wrote: >>>> >>>>> i chose proto3 for cache (serialize) for my application , and it have >>>>> run for several month . but now i wanna change my mind for proto2 , >>>>> because >>>>> the hasField is really needed . >>>>> >>>>> the problem is , there're still lots of data in the cache which are >>>>> serialized with proto3 , if i can't deserialize with them with proto2 . it >>>>> will be unacceptable . >>>>> >>>>> my question is , is it safe to switch from proto3 to proto2 ? i made >>>>> some test i could work in some case . but i'm afraid this is not full >>>>> coverage test . >>>>> >>>>> my current proto3 version is 3.6.1 , and the proto2 version i want to >>>>> use is 2.6.1 >>>>> >>>>> -- >>>>> 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. >>>>> >>>> -- >>> 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. >>> >> -- > 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. > -- 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.
