Re: URL Managment - C Function help

From: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
To: Samuel ROZE <samuel(dot)roze(at)gmail(dot)com>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: URL Managment - C Function help
Date: 2009-10-21 15:42:17
Message-ID: 4ADF2BD9.4040608@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Samuel ROZE wrote:
> PG_FUNCTION_INFO_V1(parse_url_record);
> Datum parse_url_record (PG_FUNCTION_ARGS)
> {
> // Vars about the params
> //text *str2 = PG_GETARG_TEXT_P(0);
> char str[] = "http://www.ovh.com/intenal.html";
>
> // Some vars which will used to create the composite output type
> TupleDesc tupdesc;
> Datum values[2]; // 8 values
> HeapTuple tuple;
> bool nulls[2];
> int tuplen;
>
> // Check NULLs values
> if(PG_ARGISNULL(0) || PG_ARGISNULL(1)) {
> PG_RETURN_NULL();
> }
>
> url *ret = parse_url_exec(str);
>
> // Add datas into the values Datum
> values[0] = PointerGetDatum(ret->scheme);
> values[1] = PointerGetDatum(ret->host);
>
> // Convert values into a composite type
> /*tuplen = tupdesc->natts;
> nulls = palloc(tuplen * sizeof(bool));*/
> memset(nulls, 0, sizeof(nulls));
>
> // build tuple from datum array
> tuple = heap_form_tuple(tupdesc, values, nulls);
> // Free null values
> /*pfree(nulls);*/
>
> // Return the composite type
> PG_RETURN_DATUM(HeapTupleGetDatum(tuple));
> }

You haven't initialized tupdesc.

BTW, there's a fine example in the manual:
http://www.postgresql.org/docs/8.4/interactive/xfunc-c.html#AEN44968

--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Dave Page 2009-10-21 15:47:22 Re: Client application name
Previous Message Tom Lane 2009-10-21 15:42:16 Re: URL Managment - C Function help