Re: Registring a C function in PostgreSQL II

Поиск
Список
Период
Сортировка
От Miguel González
Тема Re: Registring a C function in PostgreSQL II
Дата
Msg-id 001501c14138$3af36c10$1301a8c0@uimagen
обсуждение исходный текст
Ответы Re: Registring a C function in PostgreSQL II  (Haller Christoph <ch@rodos.fzk.de>)
Список pgsql-sql
Thank you very much for your help.
 After being testing the program first from my prompt (it worked fine) andthen within PostgreSQL, I realized that I was
usingaliases for the systemusers emails (for instance I used postgres instead ofpostgres@myhost.mydomain.com
 
once that i tried the "complete" email address it worked fine. Is itpossible to use aliases from within PostgreSQL
(outsideworks fine, which
 
issomething weird that I dont understand).
 Many thanks
 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 4:41 PM
> Subject: Re: [SQL] Registring a C function in PostgreSQL II
>
>
> > I'm working on a HP-UX system, so some of the
> > following has to be adapted, but in principle
> > it's the same on every system and it works.
> > First piece of code is a standalone program,
> > which you should always write and test before
> > you start creating C functions inside PostgreSQL.
> > Second piece is your sendemail function slightly
> > modified to make it run on my system.
> > When I do a
> > select sendemail('ch', 'was soll das?') ;
> > I'm receiving an email from postgres.
> > Regards, Christoph
> >
> > First piece:
> >
> > /*
> > cc -Aa -g -I/opt/pgsql/include/ -c sendemtest.c
> > cc sendemail.o sendemtest.o -o sendemtest
> > */
> > #include <stdio.h>
> > #include <stdlib.h>
> > #include <string.h>
> > #include "postgres.h"
> >
> > void main() {
> >    char buf[1024];
> >    int ln;
> >    text *res;
> >    text *to;
> >    int sendemail(text *email,text *message);
> >
> >    strcpy(buf, "Kissenminister Aussinger \n");
> >    ln = strlen(buf);
> >
> >    res = (text *) malloc(VARHDRSZ + ln);
> >    memset(res, 0, VARHDRSZ + ln);
> >    res->vl_len = VARHDRSZ + ln;
> >    memcpy(res->vl_dat, buf, (int) ln);
> >
> >    strcpy(buf, "ch");
> >    ln = strlen(buf);
> >
> >    to = (text *) malloc(VARHDRSZ + ln);
> >    memset(to, 0, VARHDRSZ + ln);
> >    to->vl_len = VARHDRSZ + ln;
> >    memcpy(to->vl_dat, buf, (int) ln);
> >
> >    sendemail(to, res);
> > }
> >
> > Second piece:
> >
> > /*
> > cc -Aa -g -I/opt/pgsql/include/ +z -c sendemail.c
> > ld -b -o sendemail.sl sendemail.o
> >
> > CREATE FUNCTION sendemail(text,text) RETURNS int4
> >  AS '/fdsk2/users/ch/tools/pgsql.mydoc/sendemail.sl' LANGUAGE 'c';
> > DROP FUNCTION sendemail(text,text);
> > */
> >  #include <stdio.h>
> >  #include <stdlib.h>
> >  #include "postgres.h"
> >
> >  int sendemail(text *email,text *message)
> >  {
> >      int result = 0 ;
> >
> >      char string_tosend [300];
> >
> >      sprintf(string_tosend,"/usr/bin/echo \"%s\"
> >/tmp/mailtmp.txt\n",VARDATA(message));
> >
> >      result += system(string_tosend);
> >
> >      sprintf(string_tosend,"/usr/bin/mail -dt %s </tmp/mailtmp.txt \n",
> >      VARDATA(email));
> >
> >      result += system(string_tosend);
> >
> >      result += system("/usr/bin/rm /tmp/mailtmp.txt");
> >
> >      return result;
> >
> >
> >  }
> >
> >
> > ---------------------------(end of broadcast)---------------------------
> > TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
> >
>



В списке pgsql-sql по дате отправления:

Предыдущее
От: Kovacs Baldvin
Дата:
Сообщение: Re: Checking for table existence (fwd)
Следующее
От: Miguel González
Дата:
Сообщение: Creating a boolean function