aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2013-12-11 08:11:59 -0500
committerPeter Eisentraut <peter_e@gmx.net>2013-12-11 08:11:59 -0500
commite5dc4cc24d2e1e94ac572a2c64103710bf15d21e (patch)
tree38764b0c983720331ad9c49bde24615c98f331de /doc/src
parent6bea96dd49619122bdb3fe9ddfd559a82b26ff73 (diff)
downloadpostgresql-e5dc4cc24d2e1e94ac572a2c64103710bf15d21e.tar.gz
postgresql-e5dc4cc24d2e1e94ac572a2c64103710bf15d21e.zip
PL/Perl: Add event trigger support
From: Dimitri Fontaine <dimitri@2ndQuadrant.fr>
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/plperl.sgml50
1 files changed, 50 insertions, 0 deletions
diff --git a/doc/src/sgml/plperl.sgml b/doc/src/sgml/plperl.sgml
index 10eac0e243c..34663e475fe 100644
--- a/doc/src/sgml/plperl.sgml
+++ b/doc/src/sgml/plperl.sgml
@@ -1211,6 +1211,56 @@ CREATE TRIGGER test_valid_id_trig
</para>
</sect1>
+ <sect1 id="plperl-event-triggers">
+ <title>PL/Perl Event Triggers</title>
+
+ <para>
+ PL/Perl can be used to write event trigger functions. In an event trigger
+ function, the hash reference <varname>$_TD</varname> contains information
+ about the current trigger event. <varname>$_TD</> is a global variable,
+ which gets a separate local value for each invocation of the trigger. The
+ fields of the <varname>$_TD</varname> hash reference are:
+
+ <variablelist>
+ <varlistentry>
+ <term><literal>$_TD-&gt;{event}</literal></term>
+ <listitem>
+ <para>
+ The name of the event the trigger is fired for.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>$_TD-&gt;{tag}</literal></term>
+ <listitem>
+ <para>
+ The command tag for which the trigger is fired.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ The return value of the trigger procedure is ignored.
+ </para>
+
+ <para>
+ Here is an example of an event trigger function, illustrating some of the
+ above:
+<programlisting>
+CREATE OR REPLACE FUNCTION perlsnitch() RETURNS event_trigger AS $$
+ elog(NOTICE, "perlsnitch: " . $_TD->{event} . " " . $_TD->{tag} . " ");
+$$ LANGUAGE plperl;
+
+CREATE EVENT TRIGGER perl_a_snitch
+ ON ddl_command_start
+ EXECUTE PROCEDURE perlsnitch();
+</programlisting>
+ </para>
+ </sect1>
+
<sect1 id="plperl-under-the-hood">
<title>PL/Perl Under the Hood</title>