Skip site navigation (1) Skip section navigation (2)

Array handling in libpq

From: "Joris van Zwieten" <vanzwieten(at)stcorp(dot)nl>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Array handling in libpq
Date: 2007-01-16 23:13:11
Message-ID: 53632.192.87.1.229.1168989191.squirrel@control.prolocation.net (view raw or flat)
Thread:
Lists: pgsql-interfaces
Hi everyone,


I've been using postgres for several projects and I must confess I really
like it so far. :-) I hope someone on this list could help me out.

Suppose I have a table defined with:
CREATE TABLE foo(bar double precision[]);

My initial guess was that, as postgres supports arrays, there would
probably also be some support for this in libpq (which I'm using via
libpqxx by the way).

However, from what I've been able to find, it seems that if I use the text
format for parameters / results, I would have to:

1. [SEND] Convert the double array on the C(++) side to a '{}' delimited
string representation.
2. [RECV] Convert something like '{3.124, 4.5234, 123.123}' to a C(++)
array of doubles myself.

I hope I overlooked something and there is some support for sending /
receiving (parsing) arrays in libpq?? That would be a big help.

Still, sending double in ASCII does not seem that efficient. It's not a
trivial conversion and it takes more bytes than sending it as binary.
However, it seems that using the binary format, I would have to:

1. [SEND] Convert to network byte order
          Send the array in the format arrayfuncs.c::array_recv() expects,
          i.e. including the right header (and a length per element as
          well).
2. [RECV] Parse the header, and convert from byte order

Am I missing something here? Or is this just the way it is? (Which is also
fine, then at least I know what I'm up against... ;-)

Thanks,

Joris van Zwieten



Responses

pgsql-interfaces by date

Next:From: Bruce MomjianDate: 2007-01-17 03:46:11
Subject: Re: Array handling in libpq
Previous:From: Bruce MomjianDate: 2007-01-16 04:51:14
Subject: Re: BCC55 and libpq 8.2

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group