Thread: arrays as input parameter for c functions

arrays as input parameter for c functions

From
Alexaki Sofia
Date:
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



Re: arrays as input parameter for c functions

From
Tom Lane
Date:
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


Re: arrays as input parameter for c functions

From
Alexaki Sofia
Date:
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
>



Re: arrays as input parameter for c functions

From
Joe Conway
Date:
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