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.

Reply via email to