[
https://issues.apache.org/jira/browse/THRIFT-5314?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17242708#comment-17242708
]
Yuxuan Wang commented on THRIFT-5314:
-------------------------------------
[~WiredWolf] so enums can be considered as "documented i32 constants" in some
way. on the wire they are the same as i32s, but they also come with values
documented, so you don't have to use magic numbers in your code.
If a server removed an enum value the client is still using, the server should
either return an error indicate that the client passed in an unsupported enum
value, or silently ignore it if the enum value is truly optional. This is the
same as any optional fields being absent: a lot of practical usage of
thrift/protobuf are that they define every field as optional so removing them
in the future is not a breaking change, but some of those fields are actually
required (at the time being) and if it's absent server will just return an
error to the client.
> Enum forward compatibility
> --------------------------
>
> Key: THRIFT-5314
> URL: https://issues.apache.org/jira/browse/THRIFT-5314
> Project: Thrift
> Issue Type: Bug
> Components: Rust - Compiler, Rust - Library
> Affects Versions: 0.13.0
> Reporter: Remi Dettai
> Priority: Major
>
> It seems that enums in the Rust implem are not forward compatible. As Thrift
> enums are mapped 1:1 to Rust enum, if a newer Thrift definition adds a case
> to an enum, an error will be returned when parsing the message.
> Is this intended? Is there a workaround?
> (We met this problem in the Rust parquet implem:
> https://issues.apache.org/jira/browse/ARROW-10553)
--
This message was sent by Atlassian Jira
(v8.3.4#803005)