Re: Changes to functions and triggers

From: darcy(at)druid(dot)net (D'Arcy J(dot)M(dot) Cain)
To: hackers(at)PostgreSQL(dot)org
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: Changes to functions and triggers
Date: 2000-06-21 18:13:02
Message-ID: m134ozm-000AY2C@druid.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at){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.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2000-06-21 18:16:10 Re: Big 7.1 open items
Previous Message Michael Meskes 2000-06-21 18:03:52 limit?