OK but what is the recommended way to get TupleDesc for p_type? I am aware
of RelationNameGetTupleDesc but I shouldn't use it since it is deprecated.
However by using it the code would look something like this (I tested it and
it works as expected):

Datum demo(PG_FUNCTION_ARGS) {

    float8 xi = 1;

    float8 yi = 2;

    float8 xe = 3;

    float8 ye = 4;

    int32 id = 1;

    bool isnull;


    TupleDesc tupdesc;
    TupleDesc tupdesc_p;

    Datum values[3];
    Datum vi[2];
    Datum ve[2];

    HeapTuple tuple;
    HeapTuple i;
    HeapTuple e;


    tupdesc_p = *RelationNameGetTupleDesc*("p_type");

    vi[0] = Float8GetDatum(xi);
    vi[1] = Float8GetDatum(yi);
    i = heap_form_tuple(tupdesc_p, vi, &isnull);

    ve[0] = Float8GetDatum(xe);
    ve[1] = Float8GetDatum(ye);
    e = heap_form_tuple(tupdesc_p, ve, &isnull);

    if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE)
{

        ereport(ERROR, (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("function returning record called in context that cannot accept type
record")));

    }


    BlessTupleDesc(tupdesc);


*  *  values[0] = HeapTupleGetDatum(i);

    values[1] = HeapTupleGetDatum(e);

    values[2] = Int32GetDatum(id);


    tuple = heap_form_tuple(tupdesc, values, &isnull);


    PG_RETURN_DATUM(HeapTupleGetDatum(tuple));
}

On Mon, Sep 27, 2010 at 3:32 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:

> You've omitted to tell us just
> what's going wrong for you.
>
>                        regards, tom lane
>

Reply via email to