Personally, I think it's a good design decision that Avro doesn't support
unsigned types.

Whether you use signed or unsigned only makes a difference if you expect to
have numbers between 2^63 and 2^64-1 (if you have numbers between 2^31 and
2^32-1 you can use the Avro 'long' type instead of the 'int' type). And if
your numbers are indeed between 2^63 and 2^64-1, you're better off using a
'fixed' type, which will only use 8 bytes, rather than a 'long' which would
use 10 bytes for such a large number, due to the variable-length encoding.

Another problem with unsigned types can be seen in Protocol Buffers (which
supports both signed and unsigned): if you do accidentally put -1 in a
field with an unsigned type, the resulting encoding is ten bytes long — a
surprising and unnecessary gotcha. (
https://developers.google.com/protocol-buffers/docs/encoding#types)

Interested to hear other opinions on the matter!

Martin


On 11 December 2013 12:38, Pedro Larroy <pedro.larroy.li...@gmail.com>wrote:

> Hi
>
> Is there any reason except the java centric focus of avro that it shouldn't
> support unsigned types? We use them extensively and I'm thinking for us* it
> would be useful to have them as we use mostly C++ <-> python communication
> with avro.
>
> Would this be accepted in the official avro distribution?
>
> Pedro.
>
>
> *us: Here, a Nokia business.
>

Reply via email to