Thread: 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