Jeg fandt svaret efter at have spurgt dette. Grundlæggende er der en fil kaldet catalog/pg_type.h sammen med libpq-fe.h og postgres.h. Du skal inkludere efter at have inkluderet libpq-fe.h og postgres.h, så kan du få adgang til definitioner som TEXTOID
, BOOLOID
, INT4OID
osv.
#include <stdio.h>
#include <postgres.h>
#include <libpq-fe.h>
#include <catalog/pg_type.h>
// ... snip ...
if (PQgetisnull(result, row, col)) {
// value is NULL, nothing more to do
} else {
char * value = PQgetvalue(result, row, col);
int length = PQgetlength(result, row, col);
switch (PQftype(result, col)) {
case INT2OID:
case INT4OID:
case INT8OID:
// process value as an integer
break;
default:
// just default to a text representation
}
}
Du skal se på alle OID'erne i pg_type.h for faktisk at have en omfattende liste, eller bare teste, hvad du får tilbage ved at gøre grundlæggende SELECT 't'::boolean
skriv forespørgsler osv. og opbyg kun switchen, da du har brug for en ny type, der understøtter.