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
|
Список | 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 по дате отправления: