Thread: Arrays in V1 calls

Arrays in V1 calls

From
mila boldareva
Date:
Hello
I try to pass a column from a table as a parameter to a C function.

The column is an array of float8 with V1 method.
I can't find the method to pick up the arguments-arrays,

the whole thing looks like this:

PG_FUNCTION_INFO_V1(my_func);
Datum
my_func(PG_FUNCTION_ARGS) {
     ????? how to get  the parameter as a pointer
     and reach 1st, second, etc. element of array?

     float8 *a = PG_GETARG_POINTER(0) ;
     float8 c = *(a+1) ;
     ^^^^^^^^^^^^^^^^^ doesn't give the value of a[2],
                       but an incredible number
PG_RETURN_FLOAT8(c);
}

Please help me out, or recommend where to find the info (at developers
guide I found nothing like that)


thanks,
 mila                          mailto:pierro@dds.nl


Re: Arrays in V1 calls

From
Tom Lane
Date:
mila boldareva <pierro@dds.nl> writes:
> The column is an array of float8 with V1 method.
> I can't find the method to pick up the arguments-arrays,

deconstruct_array is the most general method, but for arrays of
fixed-size objects (like float8), you can cheat.  There are some
useful examples in the aggregate operators in utils/adt/float.c.

            regards, tom lane