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.
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 |