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)