In the Java library, we added extra "is set" flags for fields that could not
be nulled out but could be not set.

On Wed, Jun 8, 2011 at 10:38 AM, Trevor Smith <tre...@knewton.com> wrote:

> Hello,
>
> The current Go compiler implementation in Thrift does not deal
> correctly with optional struct values. This, for example, makes
> compiling the Cassandra Thrift interface unusable, because it sends
> along optional string values as zero length strings, when it should in
> fact be skipping the field altogether.
>
> I am working on a patch to fix this. For many Go datatypes this is
> straight forward (ie types that can be represented as nil in Go).
> However, it is not clear to me how to generate Go code that does the
> optional check for string and integer types -- specifically to allow a
> string zero length string or an integer of value 0 in an optional
> field, versus the non inclusion of those values. This is because Go
> sets integer and string types to 0 and "", respectively, as their
> default values.
>
> Literally, I do not know how to:
>
> // Create the code to make a decision as to include or not include a
> struct field in
> // t_go_compiler.cc: generate_go_struct_writer
> if (item->get_req() == t_field::T_OPTIONAL && /* type is int and zero,
> what to do? */( {
> }
>
> Any suggestions would be appreciated.
>
> Thank you.
>
> Trevor Smith
>

Reply via email to