Re: Changes to functions and triggers

From: darcy(at)druid(dot)net (D'Arcy J(dot)M(dot) Cain)
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: hackers(at)PostgreSQL(dot)org
Subject: Re: Changes to functions and triggers
Date: 2000-06-20 13:00:14
Message-ID: m134NdW-000AY3C@druid.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thus spake Tom Lane
> darcy(at)druid(dot)net (D'Arcy J.M. Cain) writes:
> >>>> I looked and the docs and it seems that this should work instead.
> >>
> >>>> CREATE FUNCTION make_date(date, int, int, int)
> >>>> RETURNS opaque
> >>>> AS '/usr/pgsql/modules/make_date.so'
> >>>> LANGUAGE 'c';
> >>>> CREATE TRIGGER make_edate
> >>>> BEFORE INSERT OR UPDATE ON bgroup
> >>>> FOR EACH ROW
> >>>> EXECUTE PROCEDURE make_date('edate', 'aniv', 'emon', 'eyear');
> >>
> >> No. Trigger procedures never take explicit arguments --- whatever
> >> you may have stated in the CREATE TRIGGER command gets passed in
> >> in the trigger data structure. (A pretty bizarre and ugly choice
> >> if you ask me, but not worth breaking existing code to change...)
>
> > Hmm. Are you saying that the above is wrong?
>
> Yes.
>
> > I took it right from the web page documentation.
>
> What web page? http://www.postgresql.org/docs/postgres/triggers.htm
> still says what it always has (complete with bad grammar ;-)):
>
> The trigger function must be created before the trigger is
> created as a function taking no arguments and returns opaque.

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

--
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 Bruce Momjian 2000-06-20 13:40:03 Re: Big 7.1 open items
Previous Message Hiroshi Inoue 2000-06-20 05:52:17 RE: Big 7.1 open items