C Trigger issue

Started by Rod Tayloralmost 25 years ago3 messages
#1Rod Taylor
rod.taylor@inquent.com

Create function, attempt to create trigger fails, yet function
obviously exists. I can't seem to typecast the trigger parameters.
\df even misses the function.

temp=# CREATE FUNCTION dbuser_account(varchar(40), varchar(40),
varchar(40))

temp-# RETURNS OPAQUE

temp-# AS
'/usr/home/rbt/temp/postgresql-7.1beta4/contrib/user_account/user_acco
unt.so'

temp-# language 'C';

CREATE

temp=#

temp=# \df dbuser_account

List of functions

Result | Function | Arguments

--------+----------+-----------

(0 rows)

temp=#

temp=# select dbuser_account('test', 'test', 'test');

ERROR: dbuser_account: not fired by trigger manager

temp=#

temp=#

temp=# CREATE TRIGGER dbuser_account_trg

temp-# AFTER INSERT

temp-# OR DELETE

temp-# OR UPDATE

temp-# ON users

temp-# FOR EACH row

temp-# EXECUTE PROCEDURE dbuser_account('val1', 'val2', 'val3');

ERROR: CreateTrigger: function dbuser_account() does not exist

temp=#

temp=# DROP FUNCTION dbuser_account(varchar(40), varchar(40),
varchar(40));

DROP

--
Rod Taylor

There are always four sides to every story: your side, their side, the
truth, and what really happened.

#2Rod Taylor
rod.taylor@inquent.com
In reply to: Rod Taylor (#1)
Re: C Trigger issue

Sorry, Postgres 7.1 beta4
--
Rod Taylor

There are always four sides to every story: your side, their side, the
truth, and what really happened.
----- Original Message -----
From: "Rod Taylor" <rod.taylor@inquent.com>
To: "Hackers List" <pgsql-hackers@postgresql.org>
Sent: Tuesday, February 13, 2001 10:35 AM
Subject: [HACKERS] C Trigger issue

Create function, attempt to create trigger fails, yet function
obviously exists. I can't seem to typecast the trigger parameters.
\df even misses the function.

temp=# CREATE FUNCTION dbuser_account(varchar(40), varchar(40),
varchar(40))

temp-# RETURNS OPAQUE

temp-# AS

'/usr/home/rbt/temp/postgresql-7.1beta4/contrib/user_account/user_acco

unt.so'

temp-# language 'C';

CREATE

temp=#

temp=# \df dbuser_account

List of functions

Result | Function | Arguments

--------+----------+-----------

(0 rows)

temp=#

temp=# select dbuser_account('test', 'test', 'test');

ERROR: dbuser_account: not fired by trigger manager

temp=#

temp=#

temp=# CREATE TRIGGER dbuser_account_trg

temp-# AFTER INSERT

temp-# OR DELETE

temp-# OR UPDATE

temp-# ON users

temp-# FOR EACH row

temp-# EXECUTE PROCEDURE dbuser_account('val1', 'val2', 'val3');

ERROR: CreateTrigger: function dbuser_account() does not exist

temp=#

temp=# DROP FUNCTION dbuser_account(varchar(40), varchar(40),
varchar(40));

DROP

--
Rod Taylor

There are always four sides to every story: your side, their side,

the

Show quoted text

truth, and what really happened.

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Rod Taylor (#2)
Re: C Trigger issue

IIRC, trigger functions don't take parameters, they're
func() returns opaque. The arguments given in create trigger
are passed in a different way. That's why the error message
is saying dbuser_account() is missing.

On Tue, 13 Feb 2001, Rod Taylor wrote:

Show quoted text

Sorry, Postgres 7.1 beta4
--
Rod Taylor

There are always four sides to every story: your side, their side, the
truth, and what really happened.
----- Original Message -----
From: "Rod Taylor" <rod.taylor@inquent.com>
To: "Hackers List" <pgsql-hackers@postgresql.org>
Sent: Tuesday, February 13, 2001 10:35 AM
Subject: [HACKERS] C Trigger issue

Create function, attempt to create trigger fails, yet function
obviously exists. I can't seem to typecast the trigger parameters.
\df even misses the function.

temp=# CREATE FUNCTION dbuser_account(varchar(40), varchar(40),
varchar(40))

temp-# RETURNS OPAQUE

temp-# AS

'/usr/home/rbt/temp/postgresql-7.1beta4/contrib/user_account/user_acco

unt.so'

temp-# language 'C';

CREATE

temp=#

temp=# \df dbuser_account

List of functions

Result | Function | Arguments

--------+----------+-----------

(0 rows)

temp=#

temp=# select dbuser_account('test', 'test', 'test');

ERROR: dbuser_account: not fired by trigger manager

temp=#

temp=#

temp=# CREATE TRIGGER dbuser_account_trg

temp-# AFTER INSERT

temp-# OR DELETE

temp-# OR UPDATE

temp-# ON users

temp-# FOR EACH row

temp-# EXECUTE PROCEDURE dbuser_account('val1', 'val2', 'val3');

ERROR: CreateTrigger: function dbuser_account() does not exist

temp=#

temp=# DROP FUNCTION dbuser_account(varchar(40), varchar(40),
varchar(40));

DROP

--
Rod Taylor

There are always four sides to every story: your side, their side,

the

truth, and what really happened.