Team_RPCtester created THRIFT-5801:
--------------------------------------

             Summary: Handling Default Values for Optional Container Type Fields
                 Key: THRIFT-5801
                 URL: https://issues.apache.org/jira/browse/THRIFT-5801
             Project: Thrift
          Issue Type: Bug
    Affects Versions: 0.20.0, 0.19.0
            Reporter: Team_RPCtester


Hi,

We discover an inconsistent behavior illustrated by the following example.
{code:java}
namespace go commonResourcestruct 
StructClass_0 {
  1: optional list<string, string> f_1 = ["a", "b"],
}
service DataService {
    StructClass_0 Method_1(1: StructClass_0 agr_method_1)
} {code}
When default values are set for optional container type fields (e.g., lists, 
sets), these fields are not automatically initialized in Go if not explicitly 
set, whereas in other languages, these container type fields are automatically 
initialized according to the default values. For example, in the Go client 
side, our code are as follows:

 
{code:java}
agr_method_1_0 := commonResource.NewStructClass_0() 
fmt.Println(agr_method_1_0) 
// method_1_re_agr_method_1_0: StructClass_0({F_1:<nil>}) {code}
In the Python client side:

 
{code:java}
agr_method_1 = StructClass_0()   
print(agr_method_1)  
# agr_method_1: StructClass_0(f_1-[’a’,’b’]) {code}
 

 

 

In Go, the field f_1 is nil, while in Python, the field f_1 is automatically 
set to its default value ['a', 'b'].

Can you help check the issue?

Thank you.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to