From 9650830bc82045b32573e52b0843d6a2f56b802a Mon Sep 17 00:00:00 2001 From: Tom Lane <tgl@sss.pgh.pa.us> Date: Tue, 19 Aug 2008 18:30:04 +0000 Subject: [PATCH] Cause the output from debug_print_parse, debug_print_rewritten, and debug_print_plan to appear at LOG message level, not DEBUG1 as historically. Make debug_pretty_print default to on. Also, cause plans generated via EXPLAIN to be subject to debug_print_plan. This is all to make debug_print_plan a reasonably comfortable substitute for the former behavior of EXPLAIN VERBOSE. --- doc/src/sgml/config.sgml | 36 ++++++++++++------- src/backend/commands/explain.c | 4 +-- src/backend/tcop/postgres.c | 14 ++++---- src/backend/utils/misc/guc.c | 12 +++---- src/backend/utils/misc/postgresql.conf.sample | 2 +- 5 files changed, 40 insertions(+), 28 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index 16a309547b1..4d8d1aea9a9 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -1,4 +1,4 @@ -<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.185 2008/08/15 08:37:41 mha Exp $ --> +<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.186 2008/08/19 18:30:04 tgl Exp $ --> <chapter Id="runtime-config"> <title>Server Configuration</title> @@ -2817,7 +2817,6 @@ local0.* /var/log/postgresql <term><varname>debug_print_parse</varname> (<type>boolean</type>)</term> <term><varname>debug_print_rewritten</varname> (<type>boolean</type>)</term> <term><varname>debug_print_plan</varname> (<type>boolean</type>)</term> - <term><varname>debug_pretty_print</varname> (<type>boolean</type>)</term> <indexterm> <primary><varname>debug_print_parse</> configuration parameter</primary> </indexterm> @@ -2827,21 +2826,34 @@ local0.* /var/log/postgresql <indexterm> <primary><varname>debug_print_plan</> configuration parameter</primary> </indexterm> + <listitem> + <para> + These parameters enable various debugging output to be emitted. + When set, they print the resulting parse tree, the query rewriter + output, or the execution plan for each executed query. + These messages are emitted at <literal>LOG</> message level, so by + default they will appear in the server log but will not be sent to the + client. You can change that by adjusting + <xref linkend="guc-client-min-messages"> and/or + <xref linkend="guc-log-min-messages">. + These parameters are off by default. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><varname>debug_pretty_print</varname> (<type>boolean</type>)</term> <indexterm> <primary><varname>debug_pretty_print</> configuration parameter</primary> </indexterm> <listitem> <para> - These parameters enable various debugging output to be emitted. - For each executed query, they print - the resulting parse tree, the query rewriter output, or the - execution plan. <varname>debug_pretty_print</varname> indents - these displays to produce a more readable but much longer - output format. <varname>client_min_messages</varname> or - <varname>log_min_messages</varname> must be - <literal>DEBUG1</literal> or lower to actually send this output - to the client or the server log, respectively. - These parameters are off by default. + When set, <varname>debug_pretty_print</varname> indents the messages + produced by <varname>debug_print_parse</varname>, + <varname>debug_print_rewritten</varname>, or + <varname>debug_print_plan</varname>. This results in more readable + but much longer output than the <quote>compact</> format used when + it is off. It is on by default. </para> </listitem> </varlistentry> diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index d0033f43662..81f1dd0c31f 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994-5, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.177 2008/08/14 18:47:58 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/explain.c,v 1.178 2008/08/19 18:30:04 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -169,7 +169,7 @@ ExplainOneQuery(Query *query, ExplainStmt *stmt, const char *queryString, PlannedStmt *plan; /* plan the query */ - plan = planner(query, 0, params); + plan = pg_plan_query(query, 0, params); /* run it (if needed) and produce output */ ExplainOnePlan(plan, params, stmt, tstate); diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c index 132d33c5a9d..8449cb4d4c1 100644 --- a/src/backend/tcop/postgres.c +++ b/src/backend/tcop/postgres.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.555 2008/08/01 13:16:09 alvherre Exp $ + * $PostgreSQL: pgsql/src/backend/tcop/postgres.c,v 1.556 2008/08/19 18:30:04 tgl Exp $ * * NOTES * this is the "main" module of the postgres backend and @@ -630,13 +630,13 @@ pg_rewrite_query(Query *query) { List *querytree_list; - if (log_parser_stats) - ResetUsage(); - if (Debug_print_parse) - elog_node_display(DEBUG1, "parse tree", query, + elog_node_display(LOG, "parse tree", query, Debug_pretty_print); + if (log_parser_stats) + ResetUsage(); + if (query->commandType == CMD_UTILITY) { /* don't rewrite utilities, just dump 'em into result list */ @@ -666,7 +666,7 @@ pg_rewrite_query(Query *query) #endif if (Debug_print_rewritten) - elog_node_display(DEBUG1, "rewritten parse tree", querytree_list, + elog_node_display(LOG, "rewritten parse tree", querytree_list, Debug_pretty_print); return querytree_list; @@ -720,7 +720,7 @@ pg_plan_query(Query *querytree, int cursorOptions, ParamListInfo boundParams) * Print plan if debugging. */ if (Debug_print_plan) - elog_node_display(DEBUG1, "plan", plan, Debug_pretty_print); + elog_node_display(LOG, "plan", plan, Debug_pretty_print); TRACE_POSTGRESQL_QUERY_PLAN_DONE(); diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index 6cc6dcb7e03..c9fe2693265 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -10,7 +10,7 @@ * Written by Peter Eisentraut <peter_e@gmx.net>. * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.466 2008/08/15 08:37:40 mha Exp $ + * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.467 2008/08/19 18:30:04 tgl Exp $ * *-------------------------------------------------------------------- */ @@ -316,7 +316,7 @@ bool log_duration = false; bool Debug_print_plan = false; bool Debug_print_parse = false; bool Debug_print_rewritten = false; -bool Debug_pretty_print = false; +bool Debug_pretty_print = true; bool log_parser_stats = false; bool log_planner_stats = false; @@ -772,7 +772,7 @@ static struct config_bool ConfigureNamesBool[] = }, { {"debug_print_parse", PGC_USERSET, LOGGING_WHAT, - gettext_noop("Prints the parse tree to the server log."), + gettext_noop("Logs each query's parse tree."), NULL }, &Debug_print_parse, @@ -780,7 +780,7 @@ static struct config_bool ConfigureNamesBool[] = }, { {"debug_print_rewritten", PGC_USERSET, LOGGING_WHAT, - gettext_noop("Prints the parse tree after rewriting to server log."), + gettext_noop("Logs each query's rewritten parse tree."), NULL }, &Debug_print_rewritten, @@ -788,7 +788,7 @@ static struct config_bool ConfigureNamesBool[] = }, { {"debug_print_plan", PGC_USERSET, LOGGING_WHAT, - gettext_noop("Prints the execution plan to server log."), + gettext_noop("Logs each query's execution plan."), NULL }, &Debug_print_plan, @@ -800,7 +800,7 @@ static struct config_bool ConfigureNamesBool[] = NULL }, &Debug_pretty_print, - false, NULL, NULL + true, NULL, NULL }, { {"log_parser_stats", PGC_SUSET, STATS_MONITORING, diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index 063d3ec1c4a..342be9d6c3c 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -322,7 +322,7 @@ #debug_print_parse = off #debug_print_rewritten = off #debug_print_plan = off -#debug_pretty_print = off +#debug_pretty_print = on #log_checkpoints = off #log_connections = off #log_disconnections = off -- GitLab