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