On Tuesday, March 19, 2019 at 8:25:38 PM UTC-4, Adam Cozzette wrote:
>
> 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.
>

>From reading the language guide, etc, I take it that the default to the 
first value. That can be anything, 0, 1, 99, whatever. I could be wrong 
there, however; my current interest in Protobuf is in the v2 descriptors 
only, at the moment.

 

> On Tue, Mar 19, 2019 at 4:14 PM Michael Powell <[email protected] 
> <javascript:>> 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] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> 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