libpq - PQexecPrepared

Karel Zak zakkr na zf.jcu.cz
Pátek Říjen 21 15:45:07 CEST 2005


On Thu, 2005-10-20 at 15:50 +0200, Zdenek Prchal wrote:
> 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 ...

#include <endian.h>
#include <byteswap.h>

/* define ntohll and htonll macros */
#if __BYTE_ORDER == __BIG_ENDIAN
#define ntohll(x)       (x)
#define htonll(x)       (x)
#elif __BYTE_ORDER == __LITTLE_ENDIAN
#define ntohll(x)       __bswap_64(x)
#define htonll(x)       __bswap_64(x)
#endif


> Jak je to efektivitou pouziti PQexecPrepared v pripade takovychle
> kratkych binarnich parametru? 

 Ono ani tak nejde o ty parametry ty bych mozna nechal na serveru
(prevod z textu na neco jineho), ale o to, ze server nemusi parsovat ten
dotaz -- coz je pomerne narocne. To je to o co jde u PREPARE.

	Karel

-- 
Karel Zak <zakkr na zf.jcu.cz>



Další informace o konferenci Test