auto_explain: Add logging of trigger execution
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 4 Mar 2014 18:31:18 +0000 (15:31 -0300)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 4 Mar 2014 18:31:18 +0000 (15:31 -0300)
Author: Kyotaro HORIGUCHI
Reviewed-by: Jaime Casanova
contrib/auto_explain/auto_explain.c
doc/src/sgml/auto-explain.sgml

index af684794a2205484f207089e459da87001e7b1ae..c8ca7c4a3403059a6d8c8cbd9b96059b14f26174 100644 (file)
@@ -25,6 +25,7 @@ static int    auto_explain_log_min_duration = -1; /* msec or -1 */
 static bool auto_explain_log_analyze = false;
 static bool auto_explain_log_verbose = false;
 static bool auto_explain_log_buffers = false;
+static bool auto_explain_log_triggers = false;
 static bool auto_explain_log_timing = false;
 static int     auto_explain_log_format = EXPLAIN_FORMAT_TEXT;
 static bool auto_explain_log_nested_statements = false;
@@ -113,6 +114,17 @@ _PG_init(void)
                                                         NULL,
                                                         NULL);
 
+       DefineCustomBoolVariable("auto_explain.log_triggers",
+                                                        "Include trigger statistics in plans.",
+                                                        "This has no effect unless log_analyze is also set.",
+                                                        &auto_explain_log_triggers,
+                                                        false,
+                                                        PGC_SUSET,
+                                                        0,
+                                                        NULL,
+                                                        NULL,
+                                                        NULL);
+
        DefineCustomEnumVariable("auto_explain.log_format",
                                                         "EXPLAIN format to be used for plan logging.",
                                                         NULL,
@@ -295,6 +307,8 @@ explain_ExecutorEnd(QueryDesc *queryDesc)
                        ExplainBeginOutput(&es);
                        ExplainQueryText(&es, queryDesc);
                        ExplainPrintPlan(&es, queryDesc);
+                       if (es.analyze && auto_explain_log_triggers)
+                               ExplainPrintTriggers(&es, queryDesc);
                        ExplainEndOutput(&es);
 
                        /* Remove last line break */
index c9b81923b7203d7fc2603ae27f0e28ff721191eb..1037f1f2e22a404a7cab14b709ab967e0c40cb00 100644 (file)
@@ -122,6 +122,24 @@ LOAD 'auto_explain';
     </listitem>
    </varlistentry>
 
+   <varlistentry>
+    <term>
+     <varname>auto_explain.log_triggers</varname> (<type>boolean</type>)
+    </term>
+    <indexterm>
+     <primary><varname>auto_explain.log_triggers</> configuration parameter</primary>
+    </indexterm>
+    <listitem>
+     <para>
+      <varname>auto_explain.log_triggers</varname> causes trigger
+      execution statistics to be included when an execution plan is logged.
+      This parameter is off by default. Only superusers can change this
+      setting. This parameter has no effect unless
+      <varname>auto_explain.log_analyze</> parameter is set.
+     </para>
+    </listitem>
+   </varlistentry>
+
    <varlistentry>
     <term>
      <varname>auto_explain.log_format</varname> (<type>enum</type>)