Re: Changes to functions and triggers - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Changes to functions and triggers
Date
Msg-id 6991.961166659@sss.pgh.pa.us
Whole thread Raw
In response to Changes to functions and triggers  (darcy@druid.net (D'Arcy J.M. Cain))
Responses Re: Changes to functions and triggers
List pgsql-hackers
darcy@druid.net (D'Arcy J.M. Cain) writes:
> Something changed in 7.02 from 6.3.  I used to do this:
> CREATE FUNCTION make_date()  
>     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);   

> This no longer works.

Details?

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

There's surely been a lot of changes in 7.0 that could have broken
user-written triggers, but you'll need to look to your C code to
find the problem.  What you've shown us looks fine.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Thomas Lockhart
Date:
Subject: Re: Re: Big 7.1 open items
Next
From: JanWieck@t-online.de (Jan Wieck)
Date:
Subject: Re: Big 7.1 open items