Обсуждение: Functions for arrays !!!!

Поиск
Список
Период
Сортировка

Functions for arrays !!!!

От
Carlos Peralta Ramirez
Дата:
Hi,
I´m trying of to make a function that receive two arguments :
- An array of int4
- A int4
The target of this function is to evaluate if the numeric argument is or
not into of the array !!!!!
/* If anybody know of some predefined function that has the same target,
tell me !!!*/

The code is following (tester.c)->

#include <pgsql/postgres.h>
#include <stdio.h>

bool tester(int4 o[],int4 a){
int i;
for(i=0;o[i]!=0;i++)
      if (o[i]==a)
                return('t');
return('f');
}

then I compile the code

gcc -c tester.c                               /*Thanks to */
gcc -shared -o tester.so tester.o    /*Michael J. Davis*/

, and get tester.so

I create the function in PostgreSQL ->

dbtest=>create function tester(_int4,int4) returns bool as
'$path/tester.so' language 'c';
CREATE

But when try to use it, ->

dbtest=>select tester('{1,2,3,4}',3);
ERROR:  stat failed on file tester.so
/*Here I hope a 't' */

I don´t know what´s happens !!!!!

Carlos Peralta Ramírez !!!!!


Re: [SQL] Functions for arrays !!!!

От
Tom Lane
Дата:
Carlos Peralta Ramirez <cperalta@hera.inf.ucv.cl> writes:
> I create the function in PostgreSQL ->
> dbtest=>create function tester(_int4,int4) returns bool as
> '$path/tester.so' language 'c';
> CREATE

> But when try to use it, ->
> dbtest=>select tester('{1,2,3,4}',3);
> ERROR:  stat failed on file tester.so

> I don�t know what�s happens !!!!!

Looks like Postgres couldn't find the .so file to load it.
(The error message is sadly incomplete --- maybe I'll look to see
if it can be improved.)

When you wrote '$path/tester.so' above, were you being literal or
did you mean to indicate that you filled in an appropriate path?
All the examples you might see of that notation in Postgres are
in shell scripts where a variable like $path will get expanded;
if you typed it in by hand then you have to supply the complete
path by hand.  Look at the entry for the tester function in the
pg_proc table to see what pathname the system has recorded...

            regards, tom lane