1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-31 22:04:40 +03:00

Add GUC for temporarily disabling event triggers

In order to troubleshoot misbehaving or buggy event triggers, the
documented advice is to enter single-user mode.  In an attempt to
reduce the number of situations where single-user mode is required
(or even recommended) for non-extraordinary maintenance, this GUC
allows to temporarily suspend event triggers.

This was originally extracted from a larger patchset which aimed
at supporting event triggers on login events.

Reviewed-by: Ted Yu <yuzhihong@gmail.com>
Reviewed-by: Mikhail Gribkov <youzhick@gmail.com>
Reviewed-by: Justin Pryzby <pryzby@telsasoft.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Discussion: https://postgr.es/m/9140106E-F9BF-4D85-8FC8-F2D3C094A6D9@yesql.se
Discussion: https://postgr.es/m/0d46d29f-4558-3af9-9c85-7774e14a7709@postgrespro.ru
This commit is contained in:
Daniel Gustafsson
2023-09-25 12:41:49 +02:00
parent f19669fed3
commit 7750fefdb2
8 changed files with 98 additions and 10 deletions

View File

@ -9425,6 +9425,25 @@ SET XML OPTION { DOCUMENT | CONTENT };
</listitem>
</varlistentry>
<varlistentry id="guc-event-triggers" xreflabel="event_triggers">
<term><varname>event_triggers</varname> (<type>boolean</type>)
<indexterm>
<primary><varname>event_triggers</varname></primary>
<secondary>configuration parameter</secondary>
</indexterm>
</term>
<listitem>
<para>
Allow temporarily disabling execution of event triggers in order to
troubleshoot and repair faulty event triggers. All event triggers will
be disabled by setting it to <literal>false</literal>. Setting the value
to <literal>true</literal> allows all event triggers to fire, this
is the default value. Only superusers and users with the appropriate
<literal>SET</literal> privilege can change this setting.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect2>
<sect2 id="runtime-config-client-format">

View File

@ -121,9 +121,12 @@ CREATE EVENT TRIGGER <replaceable class="parameter">name</replaceable>
<para>
Event triggers are disabled in single-user mode (see <xref
linkend="app-postgres"/>). If an erroneous event trigger disables the
database so much that you can't even drop the trigger, restart in
single-user mode and you'll be able to do that.
linkend="app-postgres"/>) as well as when
<xref linkend="guc-event-triggers"/> is set to <literal>false</literal>.
If an erroneous event trigger disables the database so much that you can't
even drop the trigger, restart with <xref linkend="guc-event-triggers"/>
set to <literal>false</literal> to temporarily disable event triggers, or
in single-user mode, and you'll be able to do that.
</para>
</refsect1>