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