Re: Receiving data in binary format how is it encoded?

From: "Francisco Figueiredo Jr(dot)" <fxjrlists(at)yahoo(dot)com(dot)br>
To: Carlos Guzman Alvarez <carlosga(at)telefonica(dot)net>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Receiving data in binary format how is it encoded?
Date: 2003-07-06 15:56:13
Message-ID: 3F08469D.7090507@yahoo.com.br
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Kurt Roeckx 2003-07-06 16:30:04 Re: PostgreSQL 7.4devel - LOG: PGSTAT: socket() failed: Invalid argument
Previous Message qhwt 2003-07-06 15:55:06 Re: PostgreSQL 7.4devel - LOG: PGSTAT: socket() failed: Invalid argument