Re: Changes to functions and triggers

Поиск
Список
Период
Сортировка
От darcy@druid.net (D'Arcy J.M. Cain)
Тема Re: Changes to functions and triggers
Дата
Msg-id m134ozm-000AY2C@druid.net
обсуждение исходный текст
Ответ на Re: Changes to functions and triggers  (darcy@druid.net (D'Arcy J.M. Cain))
Ответы Re: Changes to functions and triggers  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Thus spake D'Arcy J.M. Cain
> OK, so I went back to basically what I had before.
> 
> CREATE FUNCTION make_date()                   
>     RETURNS opaque
>     AS '/usr/pgsql/modules/make_date.so'    
>     LANGUAGE 'c';
> 
> CREATE TRIGGER make_dates
>     BEFORE INSERT OR UPDATE ON bgroup
>     FOR EACH ROW
>     EXECUTE PROCEDURE make_date (edate, aniv, emon, eyear);
> 
> INSERT INTO bgroup (bname, client_id, actypid, aniv, emon, eyear, pmon, pyear)
>     VALUES ('guest', 1000, 1, 1, 1, 2000, 1, 2000);
> 
> And here is what I get.
> 
> ERROR:  fmgr_info: function 24224: cache lookup failed

I must have done this wrong.  The actual error I get when I start from
scratch is this:

ERROR:  make_date (bgroup): 0 args

That message comes from my program at the start of the function.
   if (!CurrentTriggerData)       elog(ERROR, "make_date: triggers are not initialized");   if
(TRIGGER_FIRED_FOR_STATEMENT(CurrentTriggerData->tg_event))      elog(ERROR, "make_date: can't process STATEMENT
events");  if (TRIGGER_FIRED_AFTER(CurrentTriggerData->tg_event))       elog(ERROR, "make_date: must be fired before
event");
   if (TRIGGER_FIRED_BY_INSERT(CurrentTriggerData->tg_event))       rettuple = CurrentTriggerData->tg_trigtuple;   else
if(TRIGGER_FIRED_BY_UPDATE(CurrentTriggerData->tg_event))       rettuple = CurrentTriggerData->tg_newtuple;   else
elog(ERROR, "make_date: can't process DELETE events");
 
   rel = CurrentTriggerData->tg_relation;   relname = SPI_getrelname(rel);
   trigger = CurrentTriggerData->tg_trigger;
   nargs = trigger->tgnargs;   if (nargs != 4)       elog(ERROR, "make_date (%s): %d args", relname, nargs);

All I have before that is the declarations.

-- 
D'Arcy J.M. Cain <darcy@{druid|vex}.net>   |  Democracy is three wolves
http://www.druid.net/darcy/                |  and a sheep voting on
+1 416 425 1212     (DoD#0082)    (eNTP)   |  what's for dinner.


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

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: Re: Big 7.1 open items
Следующее
От: Michael Meskes
Дата:
Сообщение: limit?