libpq - PQexecPrepared

Zdenek Prchal prchal na vtdata.cz
Čtvrtek Říjen 20 15:50:36 CEST 2005


Zdravim,

je tak trochu zvlastni, ze k tehle funkci klientske knihovny
postgresu se da sehnat tak malo informaci a prikladu pouziti
predevsim s jinymi typy parametru nez text. Potreboval jsem
pouzit int8 a int4, po nejakem hledani jsem objevil definice
OID pro tyhle typy v pg_type.h (ktery je ale v adresari server,
takze jsem tam nejdriv nehledal). Pak jsem (po par experimentech
s vesmes podivnymi vysledky) narazil na to, ze se na intelu
(little endian) musim explicitne postarat o obracene poradi bajtu.
S int4 neni problem, to resi htonl, ale co s int8? Existuje 
v glibc na linuxu na platforme i32 nejaka funkce nebo makro,
ktere si s tim poradi? Sorry za ponekud trivialni dotaz, ale
v C uz se prilis detailne neorientuji ...

Jak je to efektivitou pouziti PQexecPrepared v pripade takovychle
kratkych binarnich parametru? Pokud potrebuji vkladat vetsi mnozstvi
dat do tabulky, byl by sice asi lepsi prikaz COPY, jenze ten mi neumozni
pouzit vyrazy - potrebuji provadet neco takoveho:

insert into tab1 values((select id from tab2 where key=$1), $2,
	timestamptz 'epoch' + $3 * interval '1 second');
kde $1 je text, $2 int8 a $3 int4 ...

Diky za postrehy
Zdenek Prchal



Další informace o konferenci Test