Carlos Guzman Alvarez wrote:

Hello:

while implementing the protocol 3.0 I could get the data in text mode setting the format to 0. (Thanks all for helping me out with flush message)


Now, I want to test the binary format. While some primitive types are easy to realize, for example a int4 field will be encoded in 4 bytes,
I don't know how other types, like date, time, timestamp, text will be encoded in binary format.


Huummmmm i'm going to comment how i make in my C# implementation (stream is a binary reader ) for example for int4, date and time.


Thanks.


For int4:

int val = stream.ReadInt32();
int int4Value = IPAddress.HostToNetworkOrder(val);


Yeah, while waiting for the response, I added support for the int4 datatype. It is really encoded as a 4 bytes value.




For date ( not sure if i'm making this correct way but values seems to be correct :) )


DateTime base = new DateTime(2000, 1, 1)
int val = stream.ReadInt32();
int days = IPAddress.HostToNetworkOrder(val);

DateTime date = base.AddDays(days);



Uhmmm, where did you take the 2000,1,1 as base from?
If the date is before 2000, days will have a negative value, so date is calculated correctly backwards?



For Time:

The same as for date but reading a double and adding it to base as seconds instead of days.



The only basic data type i'm not handling now is numeric that seems to be encoded in 10 bytes but i have no seen the postgre source code yet.



Thanks Carlos. do you know in what file are these values produced?






--
Regards,

Francisco Figueiredo Jr.

------
"My grandfather once told me that there are two
kinds of people: those
who work and those who take the credit. He told me
to try to be in the
first group; there was less competition there."
- Indira Gandhi


---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster

Reply via email to