Thanks Emanuel.

It looks like the Google Protobuf spec 
(https://developers.google.com/protocol-buffers/docs/encoding?csw=1) uses 
*little-endian* encoding for both varints *and* non-varint numbers.

Can you clarify what the endian-ness is for the network binary protocol and 
the schemaless serialization in OrientDB?

>From my (limited) experimentation so far, it looks like the network binary 
protocol uses big-endian.  What about float types in the schemaless 
serialization?

-Michael

On Sunday, February 1, 2015 at 3:53:37 PM UTC-5, Emanuele wrote:
>
>  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
>
> 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] <javascript:>.
> 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.

Reply via email to