[ 
https://issues.apache.org/jira/browse/THRIFT-2429?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13970389#comment-13970389
 ] 

Randy Abernethy commented on THRIFT-2429:
-----------------------------------------

I'd like to make a new proposal. We have seen three points of view here, all 
with merit in my mind. 

# Defaults are problematic and you should avoid them. Those with this 
philosophy can use Thrift without default values in their IDL today.
# Defaults are ok but they should always be written when serializing. This is 
how Thrift '=' defaults work today, so those with this philosophy can also use 
Thrift as is today.
# Defaults are ok but they should not be serialized and should be set by the 
reader.

Case 3 (the reason for this issue) is not yet supported. I would like to 
propose the following:

*Writer Default (Thrift today, unchanged)*
The field specification below should be read as: "x defaults to 5 and is 
serialized by the writer"
bq.  1: i32 x = 5

*Reader Default (new Thrift IDL construct)*
The field specification below should be read as: "x defaults to 5 and is not 
serialized by the writer"
bq.  1: i32 x ~ 5

This will allow everyone to use Thrift the way that they think best and will be 
100% backward compatible with current Thrift implementation.

Thoughts?


> Provide option to not write default values, rely on receiver default 
> construction instead
> -----------------------------------------------------------------------------------------
>
>                 Key: THRIFT-2429
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2429
>             Project: Thrift
>          Issue Type: Improvement
>          Components: C++ - Compiler
>    Affects Versions: 0.9.1
>            Reporter: Chris Stylianou
>            Assignee: Randy Abernethy
>              Labels: default, optional, required
>
> Would there be any objections to a patch that does not write default values 
> (essentially the same logic as the optional attributes). This obviously 
> relies on the receiving application using the same IDL version to ensure the 
> defaults used on object construction match the senders.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to