I think the way to do it is just to create a new, separate double field and
migrate over to that new field. Depending on how your message is used, you
might have to temporarily populate both fields until all readers have been
updated to prefer the new field.
On Thu, Nov 16, 2017 at 1:35 PM, James
OK, thanks. Is there a recommended way of upgrading a float field to a
double field? There is no discussion of this path right now in the protobuf
docs.
James
On Thursday, November 16, 2017 at 11:16:58 AM UTC-8, liujisi wrote:
>
> The spec doesn't allow such conversion. If some language
The spec doesn't allow such conversion. If some language implementation
supports the conversion, it is considered a bug by not following spec.
Protobuf is designed to interop across different languages/platforms.
Implicit conversion in "some libraries" allows creating non portable
payload
float is 4 bytes on wire, while double is 8 bytes on wire.
If you change float to double, in the case of old data and new parser, the
parser will take the additional 4 bytes as double (these additional 4 bytes
should belong to the next field in wire),
in the case of new data and old parser, the
But the type stored on the wire is known - so it seems like it could be
supported (simply static_cast(float_val)). By 'some libraries':
does the C++ ParseFromString method do this or not?
Thanks!
James
On Wed, Nov 15, 2017 at 3:57 PM Marc Gravell wrote:
> Not really,
Not really, no. They take different amounts of space on the wire, and have
a different declared wire type (header). Some libraries may choose to be
gracious and apply the conversion silently, but other libraries could just
say "unexpected wire type" and stop processing.
You could perhaps do it as
Hi,
Is it safe to upgrade float fields to doubles for serialized protos? If
not, why not?
Thanks,
James
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to