Hello,
Sorry to
eventually bother you with questions coming from a newcomer to Postgres: I
wonder how to retrieve data of such types as Points, enum, arrays (and all those
fancy datatypes that have no directly equivalent representation in C) using the
libpq library.
For example,
imagine a table like this one, filed with the relevant
information:
create type
badluck as enum ( 'no more gas', 'flat tire', 'no keys' );
create table
myTable(
id SERIAL,
carStatus badluck,
whereIsIt Point [,
and other columns]
);
I have read the
most recent documentation from the first to the very last line, and I guess I
can retreive data of any type with the PQgetValue() function,
something like:
char*
chunkOfMemory = PQgetvalue( (const PGresult*) myresult, row_number,
column_number);
But then, is
it possible to cast the char* pointer to some meaningfull C structure if
column_number relates to some datatype other than text or integer
?
For example, with
regards to enum values, the documentation states that the length takes 4 bytes
and the label at most NAMEDATALEN bytes, so is it equivalent to (or laid out as)
something like
struct pgenum
{
unsigned char
length[4];
char
label[NAMEDATALEN];
};
(This is only one
example, I have not been able to find the layout of datatypes like Point
and Array).
Do you know of any
document that describe all those data types in term of the equivalent C
structure (if there is any such structure of course).
Thank you again
for your help and your patience.
Georges
Brefort