Tôi đã tìm thấy câu trả lời sau khi hỏi điều này. Về cơ bản có một tệp có tên là catalog / pg_type.h, cùng với libpq-fe.h và postgres.h. Bạn cần bao gồm sau khi bao gồm libpq-fe.h và postgres.h, sau đó bạn có thể truy cập các định nghĩa như TEXTOID
, BOOLOID
, INT4OID
vv
#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
}
}
Bạn cần xem xét tất cả các OID trong pg_type.h để thực sự có một danh sách mở rộng hoặc chỉ cần kiểm tra những gì bạn nhận được khi thực hiện SELECT 't'::boolean
cơ bản gõ truy vấn, v.v. và chỉ xây dựng công tắc khi bạn cần một loại mới hỗ trợ.