Re: Question: what is proper way to define python function as event_trigger?

Jeff Ross <jross@openvistas.net>

From: Jeff Ross <jross@openvistas.net>
To: Andrei Pozolotin <andrei.pozolotin@gmail.com>, pgsql-general@lists.postgresql.org
Date: 2019-12-22T23:07:13Z
Lists: pgsql-general
On 2019-12-22 15:27, Andrei Pozolotin wrote:
>
> Hello.
>
> Problem:
>
> 1. any attempt to define python function as an event_trigger, i.e.:
>
> CREATE FUNCTION public.verify()
> RETURNS event_trigger
> LANGUAGE 'plpython3u'
> AS $$ print("hello-kitty") $$;
>
> 2. fails with message:
>
> ERROR: trigger functions can only be called as triggers
>
> SQL state: 0A000
>
> 3. here in the source:
>
> https://github.com/postgres/postgres/blob/master/src/pl/plpython/plpy_procedure.c#L226
>
> Question:
>
> what is proper way to define python function as event_trigger?
>
> Thank you.
>
>
Just do

"create function public.verify() as trigger..."

https://www.postgresql.org/docs/10/plpython-trigger.html

TD["event"] contains the type of event as a string and I routinely do 
things like

     if TD["event"] == "UPDATE":
         #do update stuff
     elif TD["event'} == "INSERT":
         #do insert related stuff

Jeff




Commits

  1. PL/Perl: Add event trigger support

  2. PL/Tcl: Add event trigger support