making functions take arrays

Started by Kyleabout 25 years ago2 messagesgeneral
Jump to latest
#1Kyle
kaf@nwlink.com

Is it possible to make a compiled C function take an array as an
argument? Right now I've got a function that takes 32 arguments, all
declared as separate variables (int arg1, int arg2, ...) and it would
be a lot more natural for the function to be called with an array (int
*array, int num_elements). Is this possible?

Also, how do I return an SQL NULL from a function?

Thanks,
Kyle

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Kyle (#1)
Re: making functions take arrays

Kyle <kaf@nwlink.com> writes:

Is it possible to make a compiled C function take an array as an
argument?

Sure, although disassembling the array is not quite trivial (a Postgres
array is not the same as a C array). In the 7.1 code, there is a
deconstruct_array() function in src/backend/utils/adt/arrayfuncs.c
that will help.

Also, how do I return an SQL NULL from a function?

In 7.0, you don't. In 7.1, see src/backend/utils/fmgr/README.

regards, tom lane