Thus spake Tom Lane
> 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?
Same error as I gave for the new version I wrote.
> > 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? I took it right from
the web page documentation.
> 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.
Really? That code always worked before. Besides, it doesn't look to me
like my C code ever gets called. The failure seems to be at the SQL
level saying that there is no function to call.
--
D'Arcy J.M. Cain <darcy@{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.