[ 
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)

Reply via email to