Обсуждение: arrays as input parameter for c functions
Hello, I want to add a c function in PostgreSQL (7.2.1) Is it possible the input parametrs othe function to be arrays of text (i.e., text *temp[10])? If it's possible how can I call such a function? thank you in advance, Sofia
Alexaki Sofia <alexaki@ics.forth.gr> writes:
> I want to add a c function in PostgreSQL (7.2.1)
> Is it possible the input parametrs othe function to be
> arrays of text (i.e., text *temp[10])?
You can certainly make the function take a "text[]", but it's not
going to be spoon-fed to you as a C array; you'll need to break down
the array value yourself. See deconstruct_array. (The aggregate
support functions for numeric avg/stddev/etc might be useful examples
of interpreting and constructing arrays of varlena datums.)
regards, tom lane
thank you for your answer. Could you tell me how such a function is it called? Let's say that the function is test(text[]) how can I call this function from a sql command, i.e., what will be teh value of the input parameters? select test(?????????) Sofia On Fri, 12 Jul 2002, Tom Lane wrote: > Alexaki Sofia <alexaki@ics.forth.gr> writes: > > I want to add a c function in PostgreSQL (7.2.1) > > Is it possible the input parametrs othe function to be > > arrays of text (i.e., text *temp[10])? > > You can certainly make the function take a "text[]", but it's not > going to be spoon-fed to you as a C array; you'll need to break down > the array value yourself. See deconstruct_array. (The aggregate > support functions for numeric avg/stddev/etc might be useful examples > of interpreting and constructing arrays of varlena datums.) > > regards, tom lane >
Alexaki Sofia wrote: > thank you for your answer. > > Could you tell me how such a function is it called? > > Let's say that the function is test(text[]) > how can I call this function from a sql command, i.e., what > will be teh value of the input parameters? > > select test(?????????) > See contrib/dblink in CVS HEAD, specifically dblink_build_sql_insert(), dblink_build_sql_delete(), or dblink_build_sql_update(). These functions accept text arrays (and int2vector) as input. In the README there are usage examples. HTH, Joe