[
https://issues.apache.org/jira/browse/THRIFT-6176?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sylwester Lachiewicz closed THRIFT-6176.
----------------------------------------
Fix Version/s: 0.25.0
Assignee: Sylwester Lachiewicz
Resolution: Fixed
> Go generator: struct field named isSetX collides with the generated IsSetX()
> accessor
> -------------------------------------------------------------------------------------
>
> Key: THRIFT-6176
> URL: https://issues.apache.org/jira/browse/THRIFT-6176
> Project: Thrift
> Issue Type: Bug
> Components: Go - Compiler
> Affects Versions: 0.24.0
> Reporter: Sylwester Lachiewicz
> Assignee: Sylwester Lachiewicz
> Priority: Major
> Fix For: 0.25.0
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> A Thrift struct with a field {{y}} and a sibling field literally named
> {{isSetY}} generates a Go type that has both a field {{IsSetY}} and a method
> {{IsSetY()}}, which the Go compiler rejects:
> {code}
> field and method with the same name IsSetQueryParallelism
> {code}
> Real-world case: Apache Hive's {{hive_metastore.thrift}} (tag
> {{rel/release-4.2.1}}) declares
> {{WMNullableResourcePlan.isSetQueryParallelism}},
> {{WMNullableResourcePlan.isSetDefaultPoolPath}} and
> {{WMNullablePool.isSetSchedulingPolicy}}. Together with THRIFT-2063 this
> keeps the Hive metastore IDL from building for Go without patching the IDL.
> Expected: the generator mangles the field name (for example
> {{IsSetQueryParallelism_}}) the way it already avoids other reserved
> identifiers, or emits the accessor under a non-colliding name for that field.
> Workaround: rename the fields in a local copy of the IDL; field IDs are
> unchanged so the wire format is unaffected.
> _This issue was created with AI assistance._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)