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