From 72738da06f7c2535cf4307b49ef3fd0866ce44bd Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 18 Apr 2008 01:42:17 +0000 Subject: [PATCH] Cause EXPLAIN's VERBOSE option to print the target list (output column list) of each plan node, instead of its former behavior of dumping the internal representation of the plan tree. The latter display is still available for those who really want it (see debug_print_plan), but uses for it are certainly few and and far between. Per discussion. This patch also removes the explain_pretty_print GUC, which is obsoleted by the change. --- doc/src/sgml/config.sgml | 14 --------- doc/src/sgml/ref/explain.sgml | 7 +---- src/backend/commands/explain.c | 29 +++---------------- src/backend/utils/misc/guc.c | 10 ------- src/backend/utils/misc/postgresql.conf.sample | 1 - src/include/utils/guc.h | 1 - 6 files changed, 5 insertions(+), 57 deletions(-) diff --git a/doc/src/sgml/config.sgml b/doc/src/sgml/config.sgml index ec2dfb69db..85f2ea15cf 100644 --- a/doc/src/sgml/config.sgml +++ b/doc/src/sgml/config.sgml @@ -4187,20 +4187,6 @@ SET XML OPTION { DOCUMENT | CONTENT }; - - explain_pretty_print (boolean) - - explain_pretty_print configuration parameter - - - - Determines whether EXPLAIN VERBOSE uses the - indented or non-indented format for displaying detailed - query-tree dumps. The default is on. - - - - dynamic_library_path (string) diff --git a/doc/src/sgml/ref/explain.sgml b/doc/src/sgml/ref/explain.sgml index 55bb688cbb..4465686646 100644 --- a/doc/src/sgml/ref/explain.sgml +++ b/doc/src/sgml/ref/explain.sgml @@ -106,12 +106,7 @@ ROLLBACK; VERBOSE - Show the full internal representation of the plan tree, rather - than just a summary. Usually this option is only useful for - specialized debugging purposes. The - VERBOSE output is either pretty-printed or - not, depending on the setting of the configuration parameter. + Include the output column list for each node in the plan tree. diff --git a/src/backend/commands/explain.c b/src/backend/commands/explain.c index dc3e1682e8..06143cc3ac 100644 --- a/src/backend/commands/explain.c +++ b/src/backend/commands/explain.c @@ -20,7 +20,6 @@ #include "commands/prepare.h" #include "commands/trigger.h" #include "executor/instrument.h" -#include "nodes/print.h" #include "optimizer/clauses.h" #include "optimizer/planner.h" #include "optimizer/var.h" @@ -44,7 +43,7 @@ explain_get_index_name_hook_type explain_get_index_name_hook = NULL; typedef struct ExplainState { /* options */ - bool printNodes; /* do nodeToString() too */ + bool printTList; /* print plan targetlists */ bool printAnalyze; /* print actual times */ /* other states */ PlannedStmt *pstmt; /* top of plan */ @@ -271,30 +270,11 @@ ExplainOnePlan(PlannedStmt *plannedstmt, ParamListInfo params, es = (ExplainState *) palloc0(sizeof(ExplainState)); - es->printNodes = stmt->verbose; + es->printTList = stmt->verbose; es->printAnalyze = stmt->analyze; es->pstmt = queryDesc->plannedstmt; es->rtable = queryDesc->plannedstmt->rtable; - if (es->printNodes) - { - char *s; - char *f; - - s = nodeToString(queryDesc->plannedstmt->planTree); - if (s) - { - if (Explain_pretty_print) - f = pretty_format_node_dump(s); - else - f = format_node_dump(s); - pfree(s); - do_text_output_multiline(tstate, f); - pfree(f); - do_text_output_oneline(tstate, ""); /* separator line */ - } - } - initStringInfo(&buf); explain_outNode(&buf, queryDesc->plannedstmt->planTree, queryDesc->planstate, @@ -747,7 +727,8 @@ explain_outNode(StringInfo str, appendStringInfoChar(str, '\n'); /* target list */ - show_plan_tlist(plan, str, indent, es); + if (es->printTList) + show_plan_tlist(plan, str, indent, es); /* quals, sort keys, etc */ switch (nodeTag(plan)) @@ -1055,7 +1036,6 @@ static void show_plan_tlist(Plan *plan, StringInfo str, int indent, ExplainState *es) { -#ifdef EXPLAIN_PRINT_TLISTS List *context; bool useprefix; ListCell *lc; @@ -1095,7 +1075,6 @@ show_plan_tlist(Plan *plan, } appendStringInfoChar(str, '\n'); -#endif /* EXPLAIN_PRINT_TLISTS */ } /* diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index bb32f42875..2527743903 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -282,7 +282,6 @@ bool Debug_print_plan = false; bool Debug_print_parse = false; bool Debug_print_rewritten = false; bool Debug_pretty_print = false; -bool Explain_pretty_print = true; bool log_parser_stats = false; bool log_planner_stats = false; @@ -807,15 +806,6 @@ static struct config_bool ConfigureNamesBool[] = }, #endif - { - {"explain_pretty_print", PGC_USERSET, CLIENT_CONN_OTHER, - gettext_noop("Uses the indented output format for EXPLAIN VERBOSE."), - NULL - }, - &Explain_pretty_print, - true, NULL, NULL - }, - { {"track_activities", PGC_SUSET, STATS_COLLECTOR, gettext_noop("Collects information about executing commands."), diff --git a/src/backend/utils/misc/postgresql.conf.sample b/src/backend/utils/misc/postgresql.conf.sample index e5ae0e8518..9fb567bd62 100644 --- a/src/backend/utils/misc/postgresql.conf.sample +++ b/src/backend/utils/misc/postgresql.conf.sample @@ -447,7 +447,6 @@ # - Other Defaults - -#explain_pretty_print = on #dynamic_library_path = '$libdir' #local_preload_libraries = '' diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index cd690b8e81..b8dc84e28c 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -127,7 +127,6 @@ extern bool Debug_print_plan; extern bool Debug_print_parse; extern bool Debug_print_rewritten; extern bool Debug_pretty_print; -extern bool Explain_pretty_print; extern bool log_parser_stats; extern bool log_planner_stats; -- 2.39.5