私は、Cを使ってPostgreSQLの拡張を開発しています。私はgeo_trajc_elemというユーザ定義型を作成しました。私はこの新しいタイプの配列を生成する関数も作成しました。Postgresql拡張Cでユーザ定義型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);
オブジェクトのオブジェクト型を取得する関数はありますか?このような場合、get_fn_expr_argtypeを使用することはできません。これは、引数として新しい型を渡すのではなく、関数自体で作成しているからですか?正しいですか?get_oid_elem(struct geo_trajc_elem)のようにします。
特定の型の名前に属しOid
を知るために、事前
あなたはPostgreSQLのCレベルの配列APIがどれほど恐ろしいかを思い出しました。 –
ちょっとした作業...... –