On Fri, Aug 25, 2017 at 2:34 PM, Fabiana Zioti <fabi_zi...@hotmail.com> wrote:
> > 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 ? > *>Is there a function to get the id of my new type? Like get_oid_elem (struct geo_trajc_elem)* *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.