Hi,
Sorry the documentation was not perfect updating it right now, the UTF-8
way was an experiment, but the protocol it use the varint encoding as
the protobuf spec say :),
bye
Emanuel
On 31/01/15 03:19, Michael Peterson wrote:
Hi,
I've just recently started an initial effort to write a Go (golang)
driver for OrientDB. I'm starting with the binary protocol and I have
some questions.
In "field_data serialization by type" section of this document:
http://www.orientechnologies.com/docs/last/orientdb.wiki/Record-Schemaless-Binary-Serialization.html
it states that variable size integers are "implemented in the same way
of UTF-8". But the ranges then given contradict that statement:
-64 < value < 64 1 byte
-8192 < value < 8192 2 byte
-1048576 < value < 1048576 3 byte
-134217728 < value < 134217728 4 byte
-17179869184 < value < 17179869184 5 byte
If you are truly using UTF-8 "marker" bits, then a 2 byte varint would
be of the form:
110xxxxx 10yyyyyy
which leaves only 11 bits free, but your range of -8192 < value < 8192
for 2 bytes, implies that you have 14 bits available. I then found
this reference:
https://groups.google.com/forum/#!searchin/orient-database/varint$20variable$20length$20int/orient-database/8r1ES_LEDxE/rwdpxjMr-BQJ
<https://groups.google.com/forum/#%21searchin/orient-database/varint$20variable$20length$20int/orient-database/8r1ES_LEDxE/rwdpxjMr-BQJ>
which indicates that you are using the high-bit in all bytes to
indicate whether there is another byte (1=yes). Again that is
actually not how UTF-8 works. UTF-8 allows you to tell how many
totals bytes are used by parsing only the first byte only; and the
subsequent bytes all only have 6 bits free, not 7.
So the documentation should be clarified I think. (Examples would be
even better!)
Also two other questions:
* could you also specify whether all integer types are encoded
big-endian, including varints?
* can you confirm that you are using ZigZag encoding for varints? The
first reference above says you are, but the second one (the google
group link) has no mention of it. If you are using ZigZag encoding,
can you confirm that you using the form used in Google's Protocol
Buffers as documented here:
https://developers.google.com/protocol-buffers/docs/encoding?csw=1 ?
Thanks very much for your help,
Michael
--
---
You received this message because you are subscribed to the Google
Groups "OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to [email protected]
<mailto:[email protected]>.
For more options, visit https://groups.google.com/d/optout.
--
---
You received this message because you are subscribed to the Google Groups "OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.