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 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers