Thread: C Trigger issue

C Trigger issue

From
"Rod Taylor"
Date:
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.

Re: C Trigger issue

From
"Rod Taylor"
Date:
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.
>



Re: C Trigger issue

From
Stephan Szabo
Date:
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:

> 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.
> >
>