Re: Registring a C function in PostgreSQL
От | Miguel González |
---|---|
Тема | Re: Registring a C function in PostgreSQL |
Дата | |
Msg-id | 002701c140f7$9d75d710$1301a8c0@uimagen обсуждение исходный текст |
Ответ на | Re: Registring a C function in PostgreSQL (Haller Christoph <ch@rodos.fzk.de>) |
Ответы |
Re: Registring a C function in PostgreSQL II
|
Список | pgsql-sql |
Many thanks for your answers. The thing that in the Bruce´s book doesnt explain how to compile this kind of functions, anyway I found how to compile it. Now, I am still having problems. I want to create a function to send an email. I pass to the function two arguments: the email to send, and the text to send. First, I tried with pointers to char. It worked when I just create a function called "sendemail()" with no arguments and set inside the text and the email arguments. When I read some more documentation about how to use strings in PostgreSQL, I discovered that I have to use the text type in my C program I just try it but although it worked before, now I doesnt work. This is what I have tried: #include <stdio.h>#include "postgres.h" int sendemail(text *email,text *message){ char string_tosend [300]; sprintf(string_tosend,"echo \"%s\" >/tmp/mailtmp.txt \n",VARDATA(message)); system(string_tosend); sprintf(string_tosend,"mail -s \"message from PostgreSQL\" %s </tmp/mailtmp.txt \n",VARDATA(message)); system(string_tosend); system("rm /tmp/mailtmp.txt"); return 0; } and then in the back-end of PostgreSQL and I declared CREATE FUNCTION sendemail(text,text)RETURNS int4AS '/home/postgres/libpginvuimail.so'LANGUAGE 'c'; and then SELECT sendemail('postgres','test from backend'); and it didnt work. What am I doing wrong? I have being testing and I guess is something to do with the text data type and how to use it within a C program. Many thanks in advance Miguel ----- Original Message ----- From: "Haller Christoph" <ch@rodos.fzk.de> To: "Miguel González" <iafmgc@unileon.es> Cc: <pgsql-sql@postgresql.org> Sent: Wednesday, September 19, 2001 12:24 PM Subject: Re: [SQL] Registring a C function in PostgreSQL > Did you use the compiler option for generating > position independent code (PIC) for use in building > shared libraries. > Did you use the linker option for creating > a shared library - I think you did, the file > suffix .so looks that way. > I did it several times successfully using commands > like > CREATE FUNCTION byteatostr(bytea) RETURNS text > AS './byteatostr.sl' LANGUAGE 'c'; > and it worked. > Maybe you should add some more information about > what you did in detail. > Regards, Christoph >
В списке pgsql-sql по дате отправления: