我正在使用C開發PostgreSQL的擴展。我創建了一個名爲geo_trajc_elem的用戶定義類型。我還創建了一個函數來生成這個新類型的數組。在Postgresql擴展中獲取用戶定義的類型OID C
ArrayType *result_array;
struct geo_trajc_elem *traje = (struct geo_trajc_elem *)palloc(sizeof(struct geo_trajc_elem));
Timestamp time_el = PG_GETARG_TIMESTAMP(1);
struct geo_point *pt = PG_GETARG_GEOPOINT_TYPE_P(2);
int16 typlen;
bool typbyval;
char typalign;
Datum datum_element;
traje = DatumGetGeoTrajETypeP(DirectFunctionCall2(get_trajectory_elem, PointerGetDatum(time_el), PointerGetDatum(pt)));
datum_element = PointerGetDatum(traje);
/* Oid element_type = get_fn_expr_argtype(fcinfo->flinfo, 0); */
Oid element_type = ?
get_typlenbyvalalign(element_type, &typlen, &typbyval, &typalign);
是否有一個函數來獲取oid類型的對象?像get_oid_elem(struct geo_trajc_elem)
在這種情況下,不可能使用get_fn_expr_argtype,因爲我沒有將新類型作爲參數傳遞,而是在函數本身中創建它,對嗎?
在此先感謝
呃,你剛剛提醒我PostgreSQL的C級數組API是多麼可怕。 –
給予一點工作...... –