Re: Connect to a PostgreSQL-Server by TCP/IP

Lists: pgsql-interfaces
From: Fischer Ulrich <ulrich(dot)fischer(at)aerodynamics(dot)ch>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Connect to a PostgreSQL-Server by TCP/IP
Date: 2005-06-22 15:37:58
Message-ID: 42B985D6.8050603@aerodynamics.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

Hello

I'm new in this List.
I would like to connect to a Postgres-Server by a LabView-Client. The
problem is, there is NO odbc-driver for LV on Linux and no LV-interface
to postgreSQL.
So I decided to make my own simple LabView driver. Are there some docs,
which describes the basic communication over a tcp connection between
the postgres server and a client? I'm interested in 'message
architecture' (header, data for login, sql-querys and so on...) and all
this stuff.
I tried some backward engineering by sniffing the tcp connection, but it
is rather anoying. It looks like the messages have some binary headers
and they are a problem....

Has anybody an idea? Thanks for your help!!!

Regards
Ulrich

Sniffing the communication between a running perl-script (DBI) and postgres:

open tcp connection ..ok
client request .......296 bytes (???)
Postgres response ....1 byte (4e)
client request .......296 bytes (including dbname username in
ascii)
Postgres response ....5 bytes (52 00 00 00 03)
client request .......14 bytes (including password in ascii)
Postgres response ....15 bytes (52 00 00 00 00 4b 00 00 78 6f 0c 43 eb
70 5a)
client request .......44 bytes (Qbegin ; select getdatabaseencoding();
commit)
Postgres response ....79 bytes (CBEGIN Pblank getdatabaseencoding
SQL_ASCIICSELECT CCOMMIT)
client request .......60 bytes (Qselect pid, name, vorname from
mitarbeiter where pid= 'fiu')
Postgres response ....96 bytes (Pblank pid name Dvorname fiu Fischer
UlrichCSELECT)
client request .......1 byte (58)

--
Ulrich G. Fischer Dipl. Natw. ETH
Center Aerodynamics Ruag Aerospace
P.O. Box 301 CH-6032 Emmen
Tel. +41 41 268 23 53 Fax. +41 41 268 38 97
ulrich(dot)fischer(at)aerodynamics(dot)ch www.ruag.com


From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Fischer Ulrich <ulrich(dot)fischer(at)aerodynamics(dot)ch>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: Connect to a PostgreSQL-Server by TCP/IP
Date: 2005-06-22 15:51:30
Message-ID: 9398.1119455490@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

Fischer Ulrich <ulrich(dot)fischer(at)aerodynamics(dot)ch> writes:
> So I decided to make my own simple LabView driver. Are there some docs,
> which describes the basic communication over a tcp connection between
> the postgres server and a client?

http://www.postgresql.org/docs/8.0/static/protocol.html

regards, tom lane


From: Tomasz Myrta <jasiek(at)klaster(dot)net>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: Connect to a PostgreSQL-Server by TCP/IP
Date: 2005-08-10 10:38:23
Message-ID: ddcldhddcldh$1tbi$1@news.hub.orgtbiddcldh$1tbi$1@news.hub.org@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

Fischer Ulrich napisal 2005-06-22 17:37:
> Hello
>
> I'm new in this List.
> I would like to connect to a Postgres-Server by a LabView-Client. The
> problem is, there is NO odbc-driver for LV on Linux and no LV-interface
> to postgreSQL.
> So I decided to make my own simple LabView driver. Are there some docs,
> which describes the basic communication over a tcp connection between
> the postgres server and a client? I'm interested in 'message
> architecture' (header, data for login, sql-querys and so on...) and all
> this stuff.
May I ask you, why do you want to make your own direct TCP connection to
PostgreSQL? I think, in your case it would be much easier to create some
wrapper for libpq or some other frontend library. It needs less work and
you don't have to be afraid about tracking internal protocol changes.

> I tried some backward engineering by sniffing the tcp connection, but it
> is rather anoying. It looks like the messages have some binary headers
> and they are a problem....
Maybe source code of common used PostgresSQL frontends like libpq will
help you?

Regards,
Tomasz Myrta


From: jasiek(at)klaster(dot)net
To: pgsql-interfaces(at)postgresql(dot)org
Subject: cancel <ddcldh$1tbi$1@news.hub.org>
Date: 2005-08-10 10:41:26
Message-ID: ddclkl3cddclkl$273c$1@news.hub.org@news.hub.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces

This message was cancelled from within Mozilla.


From: John DeSoi <desoi(at)pgedit(dot)com>
To: Tomasz Myrta <jasiek(at)klaster(dot)net>
Cc: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: Connect to a PostgreSQL-Server by TCP/IP
Date: 2005-08-10 18:30:23
Message-ID: 3624362A-B592-4C4E-9FAF-E596C8D8D704@pgedit.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces


On Aug 10, 2005, at 6:38 AM, Tomasz Myrta wrote:

> Fischer Ulrich napisal 2005-06-22 17:37:
>
>> Hello
>> I'm new in this List.
>> I would like to connect to a Postgres-Server by a LabView-Client.
>> The problem is, there is NO odbc-driver for LV on Linux and no LV-
>> interface to postgreSQL.
>> So I decided to make my own simple LabView driver. Are there some
>> docs, which describes the basic communication over a tcp
>> connection between the postgres server and a client? I'm
>> interested in 'message architecture' (header, data for login, sql-
>> querys and so on...) and all this stuff.
>>
> May I ask you, why do you want to make your own direct TCP
> connection to PostgreSQL? I think, in your case it would be much
> easier to create some wrapper for libpq or some other frontend
> library. It needs less work and you don't have to be afraid about
> tracking internal protocol changes.
>
>
>> I tried some backward engineering by sniffing the tcp connection,
>> but it is rather anoying. It looks like the messages have some
>> binary headers and they are a problem....
>>
> Maybe source code of common used PostgresSQL frontends like libpq
> will help you?

PostgreSQL has a very nice and well documented protocol. See

http://www.postgresql.org/docs/8.0/static/protocol.html

John DeSoi, Ph.D.
http://pgedit.com/
Power Tools for PostgreSQL