Re: Changes to functions and triggers

From: darcy(at)druid(dot)net (D'Arcy J(dot)M(dot) Cain)
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: hackers(at)PostgreSQL(dot)org
Subject: Re: Changes to functions and triggers
Date: 2000-06-17 10:50:57
Message-ID: m133GBl-000AY3C@druid.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Thus spake Tom Lane
> darcy(at)druid(dot)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(at){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.

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Peter Eisentraut 2000-06-17 13:00:24 Install modes
Previous Message Hiroshi Inoue 2000-06-17 09:38:53 RE: OK, OK, Hiroshi's right: use a seperately-generated filename