Re: Changes to functions and triggers
От | darcy@druid.net (D'Arcy J.M. Cain) |
---|---|
Тема | Re: Changes to functions and triggers |
Дата | |
Msg-id | m133GBl-000AY3C@druid.net обсуждение исходный текст |
Ответ на | Re: Changes to functions and triggers (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Changes to functions and triggers
|
Список | pgsql-hackers |
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.
В списке pgsql-hackers по дате отправления: