On Fri, Aug 25, 2017 at 2:34 PM, Fabiana Zioti <fabi_zioti@xxxxxxxxxxx> wrote:
>Is there a function to get the id of my new type? Like get_oid_elem (struct geo_trajc_elem)
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 ?
A simple
SELECT oid, typname
FROM pg_type
WHERE typname = 'struct geo_trajc_elem';
should do the trick for you.
--
Melvin Davidson
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.
I reserve the right to fantasize. Whether or not you
wish to share my fantasy is entirely up to you.