I'm developing an extension to PostgreSQL using C. I created a user-defined type called geo_trajc_elem. I also created a function to generate an array of this new type.
(....)
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); (....) Is there a function to get the id of my new type? Like get_oid_elem (struct geo_trajc_elem) In this case, it is not possible to use get_fn_expr_argtype because I am not passing the new type as argument but creating it in the function itself, correct ? |