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

From darcy@druid.net (D'Arcy J.M. Cain)
Subject Re: Changes to functions and triggers
Date
Msg-id m133GBl-000AY3C@druid.net
Whole thread Raw
In response to Re: Changes to functions and triggers  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Changes to functions and triggers
List 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 by date:

Previous
From: "Hiroshi Inoue"
Date:
Subject: RE: Big 7.1 open items
Next
From: Peter Eisentraut
Date:
Subject: Install modes