Get user defined type OID (PostgreSQL extension in C)

From: Fabiana Zioti <fabi_zioti(at)hotmail(dot)com>
To: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Get user defined type OID (PostgreSQL extension in C)
Date: 2017-08-25 18:34:36
Message-ID: CP1PR80MB07417E55E182E8E5681D0D3FFD9B0@CP1PR80MB0741.lamprd80.prod.outlook.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

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 ?

Responses

Browse pgsql-general by date

  From Date Subject
Next Message marcelo 2017-08-25 18:47:18 Re: Porting libpq to QNX 4.25
Previous Message Peter J. Holzer 2017-08-25 18:26:42 Re: Porting libpq to QNX 4.25