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.