Re: Receiving data in binary format how is it encoded? - Mailing list pgsql-hackers

From Francisco Figueiredo Jr.
Subject Re: Receiving data in binary format how is it encoded?
Date
Msg-id 3F08469D.7090507@yahoo.com.br
Whole thread Raw
In response to Re: Receiving data in binary format how is it encoded?  (Carlos Guzman Alvarez <carlosga@telefonica.net>)
Responses Re: Receiving data in binary format how is it encoded?
List pgsql-hackers
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



pgsql-hackers by date:

Previous
From: qhwt@myrealbox.com
Date:
Subject: Re: PostgreSQL 7.4devel - LOG: PGSTAT: socket() failed: Invalid argument
Next
From: Kurt Roeckx
Date:
Subject: Re: PostgreSQL 7.4devel - LOG: PGSTAT: socket() failed: Invalid argument